Skip to main content

Full text of "VIC-20 Per Giocare Con Un Vero Computer (1981)(Commodore)(IT)"

See other formats


H 




1 



PER GIOCARE 
CON UN VERO COMPUTER 



C* commodore 

COMPUTER 



Pubblicato da: 

COMMODORE ITALIANA SRL 

VIA F.LLI GRACCHI, 48 

20092 CINISELLO BALSAMO (Ml) 

Copyright: Commodore Italiana srl Via F.lli Gracchi 48 Cinisello Balsamo (Ml). 
Tutti i diritti sono riservati. Questa pubblicazione non puo essere copiata, riprodotta, 
totalmente o in parte usando qualsiasi mezzo di riproduzione senza previa autorizzazione 
scritta rilasciata dalla COMMODORE ITALIANA S.r.L. 

Printed in Germany 



PER GIOCARE 

CON UN VERO 

COMPUTER 

Una guida facile al computer 



COMMODORE INTERNATIONAL 
AVALANCHE, INC. 



PREFAZIONE 

State per incontrare un computer veramente amico! Amico nel prezzo, nelle 
dimensioni, amico nell'uso, facile da apprendere e da sperimentare. Ma quello 
che e piu importante - non dovete essere un programmatore di computer e non e 
necessario che sappiate scrivere a macchina per usarlo! 

Se affrontate per la prima volta un computer, questo manuale vi fcrnira 
un'eccellente introduzione alia programmazione. A differenza della maggior 
parte dei manuali di istruzione, non dovete leggere I'intero libro per arrivare 
all'argomento che vi interessa. Dopo aver letto il Capitolo 1 (PER COMINCIARE), 
potete passare direttamente al capitolo che vi interessa ed iniziarne la lettura. 
Se v^ divertite con gli effetti di animazione, passate al Capitolo 4. Se amate la 
musica, provate il Capitolo 5. 

La prima pagina di ciascun capitolo ha un programma campione sul quale potete 
incominciare a lavorare. Basta che digitiate i programmi esattamente come 
indicato («Provare a battere questo programrria») per vedere cosa succede. 
II resto del capitolo spiega cio che avete fatto e mostra come procedere 
ulteriormente. II Capitolo 7 riassume alcuni importanti concetti di programma- 
zione e spiega le tecniche usate nei programmi esemplificativi. 

Se avete esperienza di programmazione potete usare il VIC come un qualsiasi 
microcomputer. La familiarita con i computer Commodore vi sara di aiuto dato 
che il BASIC ed i concetti relativi ai grafici sono pressoche identici a quelli usati 
nel PET/CBM. Nell'Appendice figurano materiali di riferimento e informazioni di 
programmazione avanzati. Per la programmazione piu sofisticata, vi rimandiamo 
alia GUIDA DI RIFERIMENTO PER IL PROGRAMMATORE VIC, disponibile presso 
i rivenditori Commodore. 

Se non siete unespertodi computer e non avete alcun interesse alia programma- 
zione, dovete dare uno sguardo alia crescente libreria di nastri programma e di 
cartucce a innesto del VIC. Le cartucce VIC si inseriscono direttamente nella parte 
posteriore della console e funzionano automaticamente. I programmi sono forniti 
anche su cassette di nastro magnetico da usare con il registratore a cassetta 
Commodore. 

Cartucce e nastri comprendono giochi interessanti tipo «VIC INVADERS" 
e programmi educativi per aiutarvi a sviluppare capacita speciali nonche pro- 
grammi di utilita per la casa che vi aiuteranno a risolvere i problemi piu svariati e 
ad eseguire calcoli. 

Leperifericheegliaccessori peril VIC comprendono il registratore a cassetta VIC, 
I'unita a disco singolo, il modem telefonico e la stampante, per citarne solo i piu 
importanti (vedere Appendice A). 

I computer stanno diventando una parte sempre piu importante della nostra vita 
quotidiana- nelle nostre case, ascuolae nella vita. Coloro che hanno familiarita 
con il computer si troveranno avvantaggiati nei mesi e negli anni a venire. II VIC 
non solo vi introduce al mondo della programmazione mavi da anche le possibility 
e la flessibilita che vi servono per espandere quel mondo. 

Approfittatene! 



Indice 

Capitolo Titolo Pagina 

PREFAZIONE II 



Conoscere il VIC 1 

- Per cominciare 3 

- II primo programma 7 



Usodelloschermoedella tastiera 11 

- II primo carattere grafico 14 

- Un giro della tastiera del VIC 20 17 

- La stampa sullo schermo 21 

- II calcolatore del VIC 20 24 

- Introduzione al colore 25 



Colore e grafici 27 

- Programmazione a colori 30 

- I tasti colore del VIC 32 

- Come cambiarei colori dei marginiedello schermo 34 

- Combinazioni di colori dei margini e dello schermo 37 

-Colorazionedello schermo 37 

- Posizioni dello schermo 39 

- Colori casuali 40 

- Combinazioni di suono e di colore 45 

- I grafici da tastiera 47 

- I grafici nei titoli 48 

Animazione 51 

- Uccelli volanti 53 

- Pallina rimbalzante 57 

- Controllo del cursore 60 

- Animazione con POKE e PEEK 61 



Suono e musica 67 

- Creazione delle note 69 

- Le quattro voci del VIC 71 

- II generatore di «rumore bianco» 74 

- Esecuzione di motivi 76 

- Uso del VIC come piano 78 

- Alcune parole su POKE 80 



6 La conversazione col VIC 81 

- Qual e il proprio norhe 83 

- Presentazionedellevariabili 86 

- Scegliere una nota 88 

- L'istruzione GET 89 



7 Introduzione alia programmazione 93 

- I primi programmi BASIC 95 

- Numeri casuali 103 



Titolo Pagina 



Appendici 105 

A. Gli accessori VIC -Una rapida introduzione 106 

B. Uso del registratore a cassetta 109 

C. II BASIC del VIC 113 

D. Abbreviazioni per le parole chiave BASIC 133 

E. Combinazioni di colori delloschermoedel margine 134 

F. Tabelle delle note musicali 135 

G. 20 Effetti sonori per il VIC 20 135 

H. Codici dello schermo 139 

I. Mappe di memoria dello schermo 143 

J. Codici ASCII eCHR$ 145 

K. Derivazione di funzioni matematiche 148 

L Configurazionedei piedini peri dispositividi Input/Output. . . 149 

M. I programmi VIC da provare 153 

N. Messaggi di errore 160 



IV 



Come collegare il VIC 

Benvenuti al calcolo! Leseguenti istruzioni dettagliate mostrano come 
aprire I'imballo del VIC, collegare il televisore ed assicurarsi che funzioni 
correttamente. 



Iniziamo con il dare un rapido sguardo al VIC-20: 



TASTIERA (Usata per battere infor- 
mazioni ed istruzioni nel com- 
puter) 



SPIADI ACCENSIONE 

(Si illuminaquandoil VICeacceso) 




CONNETTORE PER 

COMANDOGIOCHI 

(Per la barra di comando ed altri 

dispositivi di comando giochi). 



PRESA PER CAVO DI 
ALIMENTAZIONE 
(Collegare qui il cavo di 
alimentazione) 



INTERRUTTORE DI ACCENSIONE 



CONNETTORE DI 
ESPANSIONE 



(Inserire qui le cartucce 
prog ramma VIC). 

CONNETTORE VIDEO A 5 
PIEDINI (Per collegamento 
ad un televisore o ad 
un monitor). 




CONNETTORE 
PER L'UTENTE 
(Per accessori 
come floppy 
disk, stampante). 



CONNETTORE 
SERIALE(Per 
accessori speciali 
tipo stampante, 
unita disco, ecc.) 



CONNETTORE PER CASSETTA 
(II registratore a cassetta va 
collegato qui). 



1, 



Controllare il contenuto della scatola che contiene il VIC. Si dovrebbe 
trovare quanto segue: 

- Personal Computer VIC 20 

- Alimentatore (grande scatola da cui escono 2 fili) 

- Modulatore RF (piccola scatoletta metallica) e cavo 

- Cavo coassiale con spine 

Occorrono due prese di corrente - una per il VIC ed una per il 
televisore. 

Posizionare il VIC ed il televisore in modo da poter usare la tastiera como- 
damente mentre si osserva lo schermo del televisore . . . idealmente su una 
scrivaniao un tavolo. 



5. 



8. 
9. 



Trovare I'interruttore ON/OFF 
sulladestradel VIC.Assicurarsi 
che sia nella posizione OFF 
(spento). 

Ci sono due cavi che escono 
dall'alimentatore. Inserire il 
cavo deM'alimentatore in una 
presa di corrente e collegare 
I'altra estremita del cavo nella 
presa per cavo di alimentazione 
sul lato del VIC. NOTA: L'ali- 
mentatore rimane acceso 
mentre e inserita la spina 
cosicche occorre scollegare 
quando non e in uso 

Collegare il cavo video alia 
parte posteriore del VIC ed alia 
scatola del modulatore RF 
come indicate Assicurarsi di 
collegarlo al connettore video 
e non al connettore seriale a 6 
piedini posto di fianco. 
PHONO 

Collegare il modulatore TV al 
televisore per mezzo della 
spinafono-laspinasi inseris- 
ce nel modulatore e I'altra 
estremita si collega alia presa 
UHF del televisore per mezzo 
di una spina coassiale. 

Accendere il 
televisore 

Accendere il video (la spia 
rossa sulla parte superiore del 
computer dovrebbe accender- 
si). Se la spia non si illumina, 
consultare la tabella che 
segue. 




INTERRUTTORE DI 
ACCENSIONE 



-->-2V 




PRESA PER CAVO 

DI ALIMENTAZIONE 



ALIMENTATORE 




CONNETTORE VIDEO 



CAVO VIDEO 



SPINA 



SPINA VIDEO 




ALLA PRESA D'AN- 
TENNATV 



SPINA 
COASS. 



VI 



10. 



11, 



12. 



Mettere a punto il televisore fino a 
che non si ottiene un'immagine 
nitida. La sintonia fine del televiso- 
re pud richiedere alcune regola- 
zioni. Ecco cosa si dovrebbe 
vedere comparire sullo schermo - 
talvolta occorre un secondo o due 
perche compaia. Se non si ottiene 
la seguente visualizzazione sullo 
schermo, spegnere il computer, 
attendere alcuni secondi e riac- 
cenderlo. 

La regolazione del colore e del 
contrasto dipendono dai comandi 
previsti sul televisore - natural- 
mente gli apparecchi con migliori 
comandi danno una resa croma- 
tica migliore. Alcuni apparecchi 
rendono taluni colori megliodegli 
altri. 

Se ci sono problemi con una qual- 
siasi di queste fasi, consultare la 
tabelladi ricercaguasti che segue. 



BYTES FREE 



ORA E' POSSIBILE INIZIARE AD USARE IL VIC 20 



NOTA: E' possibile usare un monitor invece di un televisore - nel qual caso 
occorre andare direttamente dal VIC al cavo del monitor, senza passare attra- 
verso il modulatore RF. 



VII 



Tabella per la ricerca dei difetti 



Sintomo 



Causa 



Rimedio 



NESSUNAIMMAGINE 
(Spiadi accensione 
spenta) 



VIC non collegato 



Controllare la presa vicino 
all'interruttore 



Alimentatore non 
collegato 



Controllare il collegamento 
con la presa 



Fusibiledel VIC 
difettoso 



Portare il VIC al centro di 
Assistenza Autorizzato per 
la sostituzione del fuslbile* 



ASSENZADIIMMAGINE 

(Spia accesa) (Provare a spegnere il VIC per alcuni secondi quindi riaccenderlo) 



IMMAGINESENZA 
COLORE 



TV sul canale 
sbagliato 


Controllare il canale per 
I'immagine 


Collegamento 
scorretto 


II VIC si collega alia presa 
UHF sul TV (la presa 
d'antenna) 


Modulatore non 
inserito 


Controllare il collega- 
mento sul connettore 
video a 5 piedini 


Cavo video non 
collegato 


Controllare il collega- 
mento sul modulatore 



TV non sintonizzato 



Risintonizzare il televisore 



IMMAGINE CON 
COLORI DEBOLI 



IMMAGINE CON 
ECCESSIVO 
RUMOREDI FONDO 

IMMAGINE OK MA 
MANCAILSUONO 



Regolazione cromatica Regolare colore/ 

scorretta sul televisore contrastro/luminosita sul 

(vedere «lmmagine televisore 
senza colore») 

Volume televisore Regolare il volume del 

troppo alto (vedere televisore 
«lmmagine senza colore») 



Volume televisore 
troppo basso 



Regolare il volume del 
televisore 



II VIC usa unfusibile 
3 A a ritardo. 




VIII 



Provare a battere questo 
programma: 

Battere questo programma esattamente come indicato e 
vedere cosa succede! 




Per interrompere il programma, premere il tasto 





Per cominciare - Qualche esperimento 

E' fatta! II VIC freme in tutti i suoi colori ed e pronto a dire cosa fare. 
II rettangolo lampeggiante blu scuro, detto cursore, e il segnale per 
informare che ii VIC e in attesa che si batta qualche cosa. 




Suggerimento VIC: 

Se si batte involontariamente un carattere indesiderato sullo schermo, 



premere il tasto 




. Questo tasto cancellera il carattere immediata- 



mente alia sinistra del cursore lampeggiante. Usare questo tasto quanto 
spesso si desidera per cancellare caratteri indesiderati. 



Ora, si parte! Iniziare premendo i seguenti tasti: 

Visto come il cursore si muove di una posizione ogni volta che si preme 
un tasto? II cursore dice cioe dove apparira il successivo carattere sullo 
schermo. OK, ora bisogna trovare il tasto SHIFT, che.e simile a quello 
riprodotto in figura: 




Ce ne sono due, il funzionamento e identico. 



Tenere abbassato il tasto | | e contemporaneamente 

E' possibile sbloccare il tasto ^EH^B dopo aver premuto il tasto 



Lo schermo dovrebbe apparire come segue: 




La pressione contemporanea dei tasti 



ha provocato la 



comparsa delle virgolette sullo schermo.* Ma continuiamo. Premere ora 
i seguenti tasti: 



SEE1 Sil 



Infine tenere abbassato il tasto II e premere di nuovo 
Lo schermo ora si presenta come segue: 



**** CBM BASIC V2 

3583 BYTES FREE 

READY. 

PRINT "RAINBOW" 



* Nota: Se e comparso il numero 2 sullo schermo invece del segno», 
significa che non si e tenuto abbassato il tasto II . Premere una 
volta H^gV per cancellare il 2 e provare di nuovo. 

4 




Cercare ora il tasto 
Premere il tasto 



ed osservare lo schermo. 




La pressione del tasto 



dice al VIC che si e terminata la 



battitura. II VIC quindi guarda cosa e stato battuto, riconosce che gli e 
stato chiesto di fare qualche cosa (in effetti stavolta gli e stato detto di 
stampare qualcosa). II VIC quindi stampa (PRINT) tutto cio che si trova 
fra le virgolette (RAINBOW). 

Quando il VIC ha finito di stampare la parola RAINBOW, lo fa sapere 
visualizzando il messaggio READY e facendo lampeggiare il cursore. 

Tocca ora all'operatore, che deve immettere qualche altro messaggio 
PRINT perche il VIC lo visualizzi. Provare con queste frasi o con altre a 
propria scelta: 



r 



~r 



SSESBBI0ESQ 



Premere ora 



EEB1S0E] EBB 



ESE1B0E0B1B B -(premere dinuovo 




Occorre ora provare con altri caratteri diversi dalle lettere tra i segni di 
virgolette: il VIC non se ne preoccupa. Nota: Se si compie un errore nel 
battere la parola PRINT, il VIC ne da notizia visualizzando questo 
messaggio sullo schermo: 




Non preoccuparsi. Non c'e assolutamente modo di danneggiare il VIC 
battendo sulla tastiera (a meno che naturalmente chi batte non sia un 
elefante), ma se si compie un errore, il VIC aiuta richiamando I'atten- 
zione sull'errore stesso. Questi messaggi di errore e cio che essi 
sign ificanosonospiegatinell'AppendiceN. A questo punto non bisogna 
preoccuparsi del massaggio «SYNTAX ERROR». Basta continuare a 
fareesperimenti. 

In breve lo schermo si riempie con tutto il materiale che si sta battendo. 
Ma il VIC ha un comodo mezzo per sgombrarlo. Per dire al VIC di 
«liberare» lo schermo, procedere come segue: 



Tenere abbassato il tasto 



e premere il tasto 



llMPORTANTE S 



Lo schermo si libera istantaneamente; tutto cio che I'operatore ed il VIC 
hanno scritto su di esso scompare. Rimane pertanto un'area di 
visualizzazione bianca pulitaed un cursore blu lampeggiante nell'angolo 
superioresinistro. 

Ricordarsi cosa si e detto al VIC per fargli liberare lo schermo. La 
cancellazione dello schermo e uno dei comandi piu frequenti che si 
useranno man mano si imparera a conoscere il VIC. 



II primo programma 



II VIC si e comportato benissimo nel visualizzare i messaggi per quanto 
bizzarri potessero essere, quindi il computer e probabilmente pronto a 
fare qualche altra cosa. Inizieremo «immettendo» il primo programma di 
computer. 



FASE 1: Cancellare lo schermo tenendo abbassato il tasto 
premendo il tasto IK 

FASE2: Battere [N] |~E] [W] e premere il tasto 

FASE 3: Battere [f] [p] g] Q] [N] [T] Q 

Usare il tasto 




Al termine, lo schermo appare come segue: 




Suggerimento VIC: Per correggere gli errori in un 
programma 

Se si compie un errore su una riga, ci sono a disposizione queste 
possibility di correzione: 

1. E' possibile ribattere una riga in qualsiasi momento. II VIC automatica- 
mente sostituisce la nuova riga alia vecchia. Per esempio, se il 
programma appare come segue: 

10PRINN «VIC20 
20 GOTO 10 




E' possibile rimediare battendo ^HSiMi^M alcune volte e quindi 
battendo: 

10PRINT«VIC20 

Ora la nuova riga ha sostituito la vecchia e il programma «funzionera». 
Per assicurarsene, batte re |l] fl [ |S[ [ T| . Lasostituzione di riga in un 
programma e anche un rapido e facile modo per fare esperimenti. 

2. E' possibile cancel/are una riga indesiderata battendo il numero di 
quella rigae premendo^^^^ffi^^B. L'intera riga verra cancellata 
dalla memoria. 

3. E' possibile correggere una riga usando i tasto che comandano il 
movimento del cursore per spostare il carattere o i caratteri di una riga 
del programma che si vuol e cambiare, batt endo un programma sopra 

di essi e battendo di nuovo ^Hj^^S^^B . Notare che le virgolette 



talvoltaconfondonoil VIC-sesi ottengono caratteri indesiderati dopo 
le virgolette, tornare all'inizio della riga e ribatterla. 



4. II tasto INST (che si pud ottenere battendo ■ ■ §^f§ ) consente di 

inserire caratteri aprendo degli spazi in una parola o in una virgola gia 
battute. 



5. II tasto DELETE (basta battere|W|U) cancella i caratteri posti 
immediatamente alia sinistra del cursore. 



Se tutto sembra corretto, battere la parola seguente e premere 



RUN 



Lo schermo dovrebbe riempirsi con tante scritte VIC 20, che sembrano 
piccole lettere animate che viaggiano sullo schermo. 



VIC20VIC20VIC20VIC20VIC20VK 
IC20VIC20VIC20VIC20VIC20VIC20> 
:20VIC20VIC20VIC20VIC20VIC20V 
20VIC20VIC20VIC20VIC20VIC20V 
)VIC20VIC20VIC20VIC20VIC20VI 
'IC20VIC20VIC20VIC20VIC20VIC20 , 
C20VIC20VIC20VIC20VIC20VIC20V 
20VIC20VIC20VIC20VIC20VIC20V 
0VIC20VIC20VIC20VIC20VIC20VI 
'IC20VIC20VIC20VIC20VIC20VIC20> 
MC20VIC20VIC20VIC20VIC20VIC20\ 
'IC20VIC20VIC20VIC20VIC20VIC20^ 



Si vuole rallentare il programma? Basta premere il tasto lam posto alia 

sinistra dellatastiera. 

Se si tiene abbassato il tasto ^^M il programma rallenta. 

Interessante! II VIC e pieno di meravigliose caratteristiche. Qui con una 
semplice operazione sui tasti si sta dicendo al VIC di ridurre la velocita 
con cui sta riempiendo lo schermo di caratteri. 

Si, ma come fermare il programma? Buona domanda. Osservare la 
tastiera finche non si trova il tasto 
Premere il tasto 



II programma dovrebbe interrompersi e sullo 
schermo dovrebbe comparire il messaggio: 

BREAK IN 1 

READY 

(non preoccuparsi, non si e rotto il VIC - «break» significa «stop» nel 
linguaggio che il VIC usa). Inoltre dovrebbe riapparire il cursore. 
Notato che se n'era andato durante la stampa? 

Ora diamo uno sguardo al programma per vedere se c'e ancora. 
Provare battendo: 



BB^B 



II programma (righe 10 e 20) verra visualizzato sullo schermo. Battere 
ora RUN per farlo ripartire. 



Sono stati cosi presentati parecchi aspetti del VIC che si useranno 
spesso nei capitoli successivi. Finora: 

• Si sono stampati (PRINT) messaggi sullo schermo. 

• Si e cancellato lo schermo (tasti SHIFT CLR). 

• Si e scritto il primo programma (VIC 20) e creato un effetto di 
animazione. 

• Si e rallentato (ConTRoLed) il programma (il tasto CTRL). 

• Si e interrotto il programma con il tasto STOP (tasto RUN/STOP). 

• Si e listato (LIST) il programma. 

• Si e imparato qualche modo facile per correggere cio che viene 
battuto erroneamente. 

Man mano che si esplorano i capitoli di questa guida si troveranno molti 
usi di cio che si e visto finora. Non preoccuparsi se a questo punto ci 
sono domande che non hanno ancora una risposta. Basta procedere e 
continuare a sperimentare: la maggior parte delle domande ne 
troveranno automaticamente una. 

Questa guide e studiata per consentire di passare direttamente a 
qualsiasi capitolo che sembra interessante. Non occorre cioe leggersi 
ciascun capitolo nell'ordine per conoscere il VIC. E' pero importante 
partire dall'inizio di ciascun capitolo. Si trovera che questa introduzione 
graduale a ciascun argomento rende piu facile apprendere come creare 
proprie avventure sullo schermo. E' bene quindi approffitarne! 



10 



Provare a battere questo 
programma 

Battere questo programma esattamente come indicato e 
vedere cosa succede! 




Battere: R U N e premere 



Per interrompere il programma premere il tasto 




12 



Uso dello schermo e della tastiera 



Questo capitolo presume che si sia gia letto e compreso il Capitolo 1 : in 
caso contrario occorre tornare indietro a leggere almeno le ultime due 
sezioni che mostrano come usare la tastiera per controllare cio che il 
VIC stampa sullo schermo. 

Per iniziare, sedersi davanti alia tastiera del VIC e battere come segue, 
compreso il numero di riga e di programma ed i segni di punteggiatura: 



Tenere abbassato il tasto 



e premere il tasto 



[Nl [e] [w] e premere i I tasto 



00 



e premere 



@I@S@ I'i] 

e premere 

[R] \U\ [NJ e premere 




Quando si batte RUN lo schermo si riempi con la parola: 

HELLO 

La parola sembra muoversi verso I'alto e lateralmente! Premere il tasto 
CTRL per rallentarne leggermente il movimento. II VIC sta stampando 
(PRINT) il messaggio parecchie volte in prossimita del fondo dello 
schermo. Quando lo schermo si riempie i suoi contenuti vengono 
spostati verso I'alto per far posto ad altri caratteri. Cos! il movimento 
verso I'alto sta realmente avvenendo. L'effetto tipico della colonnina 
girevole del negozio da barbiere e una «illusione» provocata dal numero 
di caratteri che il VIC sta inserendo su ciascuna riga. 

Per interrompere questo programma premere il tasto 



Ora tocca all'operatore. Battere queste due righe: 



RUN 



premere 





Vow! Eccotrasformatol'operatorein una Stella delloschermo. Cosa fail 
nome sullo schermo? L'illusione di movimento dipende da alcuni 
caratteri presenti nel messaggio. 



Di nuovo, quando si vuole interrompere I'azione premere il tasto 



II primo carattere grafico 

Cancellare lo schermo (tenere abbassato 
contemporaneamenteBJwl). Orabattere 



e premere 

Sullo schermo 



dovrebbe comparire un cuore blu. Provare ancora. Si e cos! battuto il 
primo carattere grafico. 

Cerca re ora di battere altri caratteri grafici. Tenere abbassato il tasto 
e battere alcuni caratteri grafici -si tratta di quelli chefiguranosul 



lato sinistra dei tasti. I caratteri grafici di sinistra sono molto utili per 
disegnare moduli gestion ali, ta belle e grafici. Usando contemporanea- 

mente i tasti II e t*3 ® possibile ottenere lettere minuscole e 

maiuscole. Per la spiegazione vedere il Capitolo 3. 



Dimensione dello schermo 

Quanto misura lo schermo del VIC? Vale la pena di provare. Procedere 
come segue: cancellare lo schermo e battere quanto segue: 

[KO {E} [W] e premere BBfifflBB ■ 




\i\ m m e m m 



14 



Lo schermo si riempira di cuori blu! Contare il numero di cuori che 
vengono stampati sullo schermo. Ce nesono22 in ciascunafila. II VIC ha 
22 posizioni di stampa nel senso della larghezza dello schermo, 
posizioni talvolta dette colonne. II VIC ha cioe 22 colonne. 



Quante posizioni ci sono in senso verticale? Premere il tasto | J per 
rallentare la stampa. Abbassando il tasto ^^S si fa in modo che le 
ultime quattro file lampeggino. II VIC ha 23 file in senso verticale. 



L 
E 



COLONNA 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 





15 



II VIC ha 506 posizioni sullo schermo per i caratteri, le lettere, i simboli 
e cosi via. Si potrebbe dire che il VIC pud manipolare 506 caratteri alia 
volta. Interessante! 



SUGGERIMENTOVIC 

Se il VIC ha 22 colonne, qualsiasi messaggio la cui lunghezza sia un 
divisore pari di 22 (messaggi di 2, 1 1 e 22 caratteri), fa si che il VIC stampi 
in colonne ordinate. I messaggi di altre lunghezze proseguiranno sulla 
riga successiva. E' bene verificare questa affermazione. 



Si pud interrompere la stampa da parte del VIC di ordinate colonne di 
cuori premendo il tastolUltl. Quindi immettere queste due righe. 

r 




E' possibile cambiare il modo in cui le informazioni sono battute sullo 
schermo inserendo spazi tra le virgolette. Un altro modo consiste 
nell'usare i punti invece degli spazi. Provare a battere il proprio nome e 3 
punti nel programma all'inizio di questo capitolo. 



16 



Un giro della tastiera VIC 20 



nlam\Jan\J^:u\lnB \/ca\/tia\Jt:^yiMu 



Jttfttfmf.TnJgjaf^ mr oar 



f 4 



BiOi, 



9 



Finora e stata usata la tastiera per creare e stampare messaggi, inserire 
caratteri grafici sullo schermo, controllare in flusso di cio che il VIC sta 



facendo ( Myj] e |MJ )ed eventualmente correggere 
cio che e stato battuto ( B53 )■ 



Occorre ora dedicare un po' di tempo per un giro piu esteso della 
tastiera e vedere cosa e in grado di fare. Consultare il diagramma che 
precede che illustra la potente e versatile serie dei tasti del VIC 20. 

Questo e un tasto di «ripristino». 

Se si batte il tasto RUN/STOP e contemporaneamente si batte il tasto 
I, si ripristina completamente il computer comese lo si fosse 



RESTORE 



appena riacceso . . . con il beneficio che qualsiasi programma presente 
nella memoria viene conservato e pud essere listato o eseguito 
dall'inizio. 



17 





Tasti SHIFT- La tastiera del VIC e esattamente 
come quella di una macchina da scrivere ed ha due 
tasti shift ed un tasto SHIFT LOCK. 
II tasto SHIFT viene usato con altri tasti per battere caratteri grafici e per 
eseguire operazioni tipo la cancellazione dello schermo. 

Tasto CLR/HOME- La pressione di questo tasto 
sposta il cursore all'angolo superiore sinistro dello 
schermo (posizione di partenza). 
Se si tiene abbassato il tasto SHIFT e si preme questo CLR/HOME il 
cursore ritorna in ogni caso alia posizione di partenza ma contempo- 
raneamente cancella lo schermo. 





Tasti CRSR - Con il VIC, e possibile spostare 
facilmente il cursore verso I'alto, verso il basso e 
lateralmente. I tasti CRSR hanno la capacita di 
ripetizione automatica, che consente di mantenere il cursore in movi- 
mento fino a che non si rilascia il tasto. Ciascun tasto porta una serie di 
frecce che dicono quali direzioni il tasto controlla - movimento verso 
I'alto, verso il basso o laterale. Per spostare il cursore verso il basso o 
verso destra, occorre premere semplicemente I'appropriato tasto. Per 
spostarlo verso I'alto o verso sinistra occorre tenere abbassato il tasto 
SHIFT mentre si preme I'appropriato tasto CRSR. E' importante tener 
presente che e possibile muovere il cursore sopra i caratteri dello 
schermo senza influire su tali caratteri. 



RETURN 



Tasto RETURN - Occorre premere RETURN al 
termine di ciascuna riga di istruzioni. La pressione 
di questo tasto dice al VIC di immettere la riga o di 
eseg' ire I'istruzione o le istruzioni. Talvolta e di aiuto pensare al tasto 
RE1 L.RN come ad un tasto ENTER (di immissione) in quanto questo 
tasto effettivamente immette le informazioni o le istruzioni nel computer. 




Tasto CTRL- Questo tasto viene usato con i tasti 
COLOR per scegliere i colon' che si creano sullo 
schermo del VIC. II tasto consente inoltredi definire 
propri comandi di controllo che possono essere incorporati in qualsiasi 
applicazione che e possibile sviluppare per il VIC. Alcune cartucce ad 
innesto si serviranno del tasto Control per eseguire funzioni speciali. 
II tasto CTRL funziona come il tasto SHIFT. Occorre tenerlo abbassato 
mentre si preme il tasto del colore. 



18 



MllllWiH»aWHI!l 



PUR \/ GRIM \/ BLU\/ YEL 



Tasti dei colori -E possibilecambiare il colore dei caratteri visualizzati 
premendo simultaneamente il tasto CTRL ed uno degli 8 tasti colore/ 
numero sulla riga superiore della tastiera. Sulla superficie anteriore di 
ciascun tasto c'e un'annotazione stenografica del nome di ciascun 
colore. I colori sono nero (BLK), bianco (WHT), rosso (RED), 
blu-verde (CYN), porpora (PUR), verde (GRN), blu (BLU) e giallo (YEL). 
Con questi tasti e possibile impostare o cambiare i colori delle lettere, 
dei numeri e grafici visualizzati all'interno o all'esterno del programma 
di computer. Una volta che si «definisce» il colore, tutto cio che verra 
battuto sara di quel colore fino a che non lo si cambia di nuovo. 





RVS W RVS 
ON V OFF 



Tasti RVS ON e RVS OFF- E' possibile invertire 
(e cioe portare in negativo) le immagini che il VIC 
inserisce sullo schermo battendo CTRL e RVS ON. 
Tutto cio che viene battuto sara quindi invertito ossia reso in negativo . . . 
ad esempio e possibile far si che il VIC visualizzi caratteri bianchi su 
fondo blu (al contrario di cio che fa normalmente) premendo CTRL e 
RVS ON. Per ritornare alia presentazione normale, battere CTRL e RVS 
OFF. Provare! 



Tasto RUN-STOP - Premere questo tasto per dire 
al VIC di interrompere I'operazione che sta facendo 
e riportare il controllo all'operatore. Quando il VIC 
sta eseguendo un programma, e possibile interrompere il programma 
stesso con questo tasto. Se si tiene abbassato il tasto SHIFT e si preme 
RUN/STOP, si dice al VIC iniziare a caricare le informazioni nella 
memoria dall'unita a cassette opzionale. 

Tasto INST-DEL - Premendo questo tasto e 
possibile inserire e cancellare caratteri della riga 
che si sta battendo. Quando si preme il tasto da solo 
scompare il carattere che si trova immediatamente alia sinistra del 
cursore. Se si e nel mezzo di una riga, il carattere a sinistra viene can- 
cellato ed il carattere alia destra automaticamente si sposta verso 
sinistra per occuparne lo spazio. Se si tiene abbassato SHIFT e si preme 
questo tasto, si crea uno spazio nella riga in modo da potervi inserire un 
nuovo carattere. Cio e molto utile per correggere ed eliminare errori! 

Grafici e tasto del COMMODORE - Quando si 
accende il VIC, si e automaticamente nel modo 
«grafici» il che significa che e possibile battere 
LETTERE MAIUSCOLE e gli oltre 60 segni grafici che si vedono sui tasti. 
Su ciascun tasto ci sono due segni grafici. Perottenerequellosul latodi 
destra, basta tenere abbassato il tasto SHIFT e battere il tasto con il 
segno desiderato. 

Per ottenere il segno grafico sul lato sinistro, tenere abbassato il tasto 
«COMMODORE» (la piccola bandierina). In questo modo e possibile 
battere contemporaneamente LETTERE MAIUSCOLE e I'intera serie di 
grafici! E' possibile creare immagini, tabelle e disegni inserendo i 
caratteri fianco a fianco o uno sopra I'altro (come mattoni). 

19 




— m i ill i a i w i pi i w i w i id i( \\t i"i( i &\Jm[i3I £& 
■4^mdndymd~>d~id rt 1 rt i ^SfSfSfmtlm^ flB^ 



Tasti MAIUSCOLO/MINUSCOLO e tasti per GRAFICI - Se si premono 
contemporaneamente i tasti SHIFTe COMMODORE si predispone il video 
nel modo testo. E' possibile quindi usare il VIC come una normale 
macchina da scrivere, con lettere maiuscole e minuscole piu tutti i segni 
grafici posti sul lato sinistro dei tasti. I segni grafici sul lato sinistro sono 
I'ideale per creare tabelle, grafici e moduli gestionali. Per ritornare al 
modo «maiuscole/grafici» premere insieme i tasti SHIFT e COMMO- 
DORE. 



> 



f 



f 



t 



Tasti di funzione programmabili - 1 quattro tasti 
marrone sul lato sinistro della console non sono 
definiti quando si accende il VIC. Ad essi possono 
essere assegnate funzioni dall'interno delle 
applicazioni che I'operatore stesso crea. Usando 
questi tasti con e senza SHIFT, e possibile ottenere 
un totale di otto tasti di funzione definibili 
dall'utente. I tasti di funzione saranno prevalente- 
mente usati con le cartucce ad innesto contenenti 

programmi speciali ma possono anche servire egregiamente ai 

programmatori. 

Tasti speciali - La tasteria del VIC contiene anche simboli speciali che 
non si trovano su molte macchine da scrivere o addirittura sulla maggior 
parte dei computer. Ad esempio figurano il simbolo della sterlina (£), il pi 
greco (77), la freccia verso sinistra («-) la freccia verso I'alto (|), il segno di 
maggiore/minore (><) e le parentesi quadre ([]). 

E con cio si conclude il giro della tastiera del VIC. Usando le sole parole 
e difficile spiegare quanto f lessibile e potente sia questa tastiera. II modo 
migliore per scoprirlo e di iniziare un giro da soli. Fare esperimenti con 
la tastiera. Provare le varie funzioni maiuscolo/minuscolo sopra 
indicate. Vedere cio che e possibile creare con la ricca serie di caretteri 
grafici del VIC. La tastieraeilcollegamentodiretto con il VIC. Conoscere 
la tastiera significa automaticamente conoscere il VIC 20. 



20 



Cancellare lo schermo ed immettere le righe seguenti 
NEW II PRINT «A», «B» 

Sullo schermo compare: 




Ora immettere questa riga e premere 
PRINT «A»; «B» 



Lo schermo ora presenta: 



NEW 
READY 



PRINT "A", "B 



READY. 
PRINT "A"; "B" 



READY. 




21 



Quando si e usata la virgola nella prima istruzione PRINT, il VIC ha 
inserito le lettere sullo schermo separandole con parecchi spazi. 
Quando e stato usato il punto e virgola, il VIC ha visualizzato le due 
lettere I'una vicina all'altra. 

Nel primo caso le lettere sono distanziata esattamente di 1 1 spazi. 
Questo fatto da un'idea di cio che sta succedendo. II VIC divide larea 
dello schermo in due parti uguali. 

Quando il VIC sta stampando (PRINT) due messaggi o numeri separati 
da una virgola, inserisce il primo sul lato sinistro dello schermo e il 
seconda su quello di destra . . . 



^IvIENO CH| 



II primo non sia lungo piu di 1 1 caratteri. 

Se il primo e rtiinore di (o uguale a) 1 1 caratteri, il VIC lo stampa e quindi 
si sposta al centro dello schermo per visualizzare il secondo. Se il 
primoe piu lungo di 1 1 caratteri, il secondo appare sulla riga seguente. 
Cancellare lo schermo e provare con questo esempio: 



PRINT «ABCDEFGHIJKL», ><X> 
Lo schermo presentera: 




La prima parte del messaggio e lunga 12 caratteri cosicche la «X» 
termina alia riga successiva. Ripetere questo esempio con un punto e 
virgola (;) tra i due elementi. 



22 



PRINT «ABCDEFGHIJKL»; «X» 
Lo schermo presenta questo risultato? 




Capito il concetto? II VIC agisce come una macchina da scrivere con una 
tabulazione automatica in prossimita del centro dello schermo. Quando 
vede la virgola, si sposta al centro dello schermo o all'inizio della riga 
successiva, quello dei due che e piu vicino. 



Cancellare lo schermo e battere la seguente riga sul VIC: 



, PRINT 1 




Visto lo spazio davanti al primo numero? Quando il VIC visualizza i 
numeri, lascia uno spazio all'inizio per il segno del numero. Se il numero 
e positivo se vede uno spazio vuoto. Se il numero e negativo sullo 
schermo dovrebbe comparire un segno meno (-). 



Provare per credere. Immettere questa riga sul VIC: 

PRINT -1,-2 
23 



Osservare lo schermo e vedere cosa compare. 




I numeri appaiono alio stess6 posto dell'esempio precedente; ora sono 
pero preceduti dal segno meno (-). 

Questi pochi esempi danno qualche idea del modo in cui il VIC pud 
aiutare ad inserire messaggi ed informazioni sullo schermo. II VIC ha 
molti altri modi per facilitare in questa funzione e sara facile impararli 
continuando ad usarlo. 



II calcolatore del VIC 

II VIC pud anche essere usato come calcolatore a nove cifre. I segni piu e 
meno sono usati esattamente come nelle operazioni aritmetiche. 
II segno di moltiplicazione del VIC e I'asterisco (*) e il segno di divisione 
e la barretta (/). Battere questi calcoli e controllare i risultati. Vedere le 
Appendici C e K per ulteriori informazioni. 



PRINT 1 + 1 
PRINT 3-2 
PRINT 5*2 
PRINT 6/3 



La barretta 

delle operazioni 

matematiche e 

quellasul 

tasto? 

La barretta su I 

tasto N 

e un simbolo 

grafico. 



PRINT 2*(4/2) 
PRINT 5000/5 
PRINT 2/3 
PRINT 3*3 




24 



Se si stampa (PRINT) un calcolo 
occorre porlo al di fuori delle virgo- 
lette. Provare con questi esemp 



1 PRINT"2*(4/2)" 

1 PRINT'THE ANSWER IS"2*(4/2) 





Introduzione al colore 

II VIC pud battere lettere, numeri e simboli grafici in otto colori diversi. 
Esso pu6 inoltre stampare caratteri in negativo. 

Con lo schermo vuoto, tenere abbassato il tasto CTRL e premere questo 
tasto: 



Mi 



t 



Ora lasciare lo spazio CTRL e premere la barra SPACE posta alia base 
della tastiera. Tenere abbassata la barra SPACE. Cosa succede? Viene 
disegnata una linea blu attraverso lo schermo? 




Tenere abbassata la barra di spazio finche lo si desidera. Quando il 
cursore scompare sul lato destro dello schermo, ricompare su quello 
sinistro e la linea blu inizia a formare una barra colorata blu piu grande. 

Rilasciare la barra SPACE e tenere: 
abbassato il tasto CTRL premendo 
contemporaneamente il tasto RED. 

25 




II cursore dovrebbe ora essere rosso. Premere e tenere abbassato la 
barra SPACE ancora una volta. Inizia aformarsi una nuova barra di color 
rosso? Si! Bene, continuare a dipingere! 




E' possibile passare ad altri colori a piacere. E' possibile inoltre creare 
barre colorate spesse o sottili. E' interessante godersi questa abilita di 
recente scoperta del VIC che da un po' di colore alia vita. 



Battere ora 




e premere la barra di spazio. 



Non succede nulla tranne che si creano spazi vuoti. 



Battere 



Dm? 



e ricompare la barra colorata. Cercare di battere qualche lettere in 
negativo. Le lettere in negativo servono bene per battere titoli e sono 
spesso usate per evidenziare parole o numeri speciali. E' possibile 
inoltre usare caratteri negativi all'interno di un programma. Per 
esempio, provare con questo: 




NEWe premere 



Colore 
e grafici 



Programmazione 
a colori 

I tasti colore 
del VIC 

Come cambiare i 
colori dei margini 
e dello schermo 

Combinazioni di 
colori dei margini 
e dello schermo 

Colorazione 
dello schermo 

Posizioni 
dello schermo 

Colori casuali 

Combinazioni di suono 
e di colore 

I grafici da tastiera 

I grafici nei titoli 



Provare a battere 
questo programma: 



Battere questo programma esattamente come indicato e 
vedere cosa succede! 



1 FOR H = 1 TO 505 

2PRINT" " 

3NEXT 

4FORC = 8 TO 255 STEP 17 

5POKE 36879, C 

6FORT = 1 TO 500: NEXT, 

7NEXT 

8GOTO 50 

RUN 



Per interrompere il programma 
premere il tasto 



Cio significa 
stampare 505 
cuori sullo 
schermo 



Cio cambia II 
valore di C 
(colore) 17 gradini 
allavoltaf?) 



Questo e 
un'iterazionedi 
ritardo che dice 
al VIC di contare 
fino a 500 prima 
di cambiare di 
nuovo il colore 




28 



Colore e grafici 



II VIC unitamente ad un televisore a colori pud consentire di inserire 
colori ovunque sullo schermo. Quando si accende II VIC, i margini, il 
cursore e qualsiasi carattere sullo schermo saranno gia a colori. 
Ma questo e solo I'inizio. II VIC puo visualizzare otto colori del cursore, 
otto colori dei margini e 16 colori dello schermo! 

Usare i tastisullatastieradel VIC perfarapparire il colori sullo schermo. 
Battere qualsiasi lettera. La lettera dovrebbe comparire in blu scuro su 
fondo bianco. Provare ora la f ila superiore di tasti (tasti numerati da 1 a 8). 
Guardando la parte inferiore si possono notare i nomi (abbreviati - in 

inglese) dei vari colori. Trovare il tasto contrassegnato J^J sul lato 

sinistra della tastiera. 



Tenere abbassato il tasto ^^m e battere il tasto contrassegnato t 

Rilasciare il tasto ^^m ed il tasto nn e battere qualsiasi lettera sulla 
tastiera. Questa lettera dovrebbe apparire in giallo. Ora tenere 
abbassato il tasto ^^M e battere un altro colore, quindi battere alcune 
lettere. Visto come e facile cambiareil colore delle lettere sullo schermo? 

Provare ora il tasto contrassegnato ^fjjjj^ . Tenere abbassato il tasto 
^ffl e battere il tasto ^^k . Provare a battere qualche altra lettera. 
Tutte le lettere battute (f ino a che non si preme il tasto II ) 
comparianno in negativo sullo schermo, come in un negativo foto- 
grafico. Sesi tiene abbassato il tasto ^^m e si batte ffiiA , le lettere 
verranno visualizzate normalmente. 



29 



Programmazione a colori 

Ora combineremo il controllo del colore con un semplice comando di 
programma. Notare che quando si batte BnH ed un tasto di colore 



all'interno delle virgolette, compare un simbolo grafico in negative 
Cio e del tutto regolare. Procedere come segue: 



Tenere abbassato il tasto 



e premere il tasto 



Battere le lettere: 



N E W e premere il tasto 



Battere quindi: 

.U\ 0IB1EQ 



e premere 




Battere: 2 



e premere 



GOTO 



ra 



30 



Se si hanno dei problemi nel battere questo esempio, ritornare alia parte 
intitolata «Per cominciare» nel Capitolo 1 . Ricordarsi comunque che non 
e possibile danneggiare il VIC in alcun modo, qualsiasi cosa si batta mae 
possibile confondersi con talune combinazioni di tasti. Se accidental- 



mente si batte il tasto FfttiM , per esempio, lo schermo risultante e difficile 
da decifrare. Se si fa un errore, battere alcune volte II e 



ribattere I'intera riga. La nuova riga sostituira automaticamente la 
vecchia. Quando si hanno le due righe sopra indicate sullo schermo, 
battere: 



|~R] |~Ul [N]epremere 



Non appena si preme il 



finale, si dovrebbero vedere 



centinaia di palline rosse e blu galleggiare sullo schermo. Come? 

E' facile con il VIC. Occorre pero tornare all'esempio precedente. Visti i 

due strani caratteri nella riga che inizia con «1 »? Essi sono stati creati 



quando si e abbassato il tasto 



e si sono premuti i tasti 



I simboli che compaiono sono la stenografica che il VIC usa per dire di 
creare la prima pallina rossa e la seconda blu. 




Quando si e stanchi di vedere palline rosse e blu, premere STOP. Chi 
apprezza I'esplorazione in forma libera pud riprovare a ribattere la riga 1 . 



Inserirealcuni 



ed alcuni tasti di colore unitamente con caratteri 



grafici, lettere o numeri. II VIC puo elaborarli tutti e fornire una 
rappresentazione a colori interessante. 



31 



I tasti colore del VIC 



Nell'ultimo esempio si e scoperto che e possibile inserire comandi dei 
colori in un messaggio PRINT usando il tasto ^^m e quelli le cui 
superfici anteriori sono contrassegnate come segue: 



Questi tasti sono contrassegnati con i numeri da 1 a 8. Quando si preme 
uno di questi tasti nel mezzo di un'istruzione PRINT, compare una serie 



di caratteri «strani». Per vedere di che cosa si tratta, premeregnjj(se il 
programmaeancorainesecuzione),cancellareloschermoedimmettere: 



PRINT 



ElBdBtAlHmElltldmiolQIwIHtliED 




jq^ ^^^ ^2^ /^^ 



Non dimenticare di inserire le virgolette o di usare il tasto toii;H con 
tasti dei colori. Lo schermo dovrebbe presentare quanto segue: 



PRINT 



m n h s m b h a @ 






R IN BOWS 



READY 



32 



Dove la letters «A»? Oh! II secondo tasto dei colori e ^ w e il fondo e . . . 
provare ad indovinare . . . bianco. 

La stampa (PRINT) di una lettera bianca «A» su un fondo bianco crea uno spazio 
nei RAINBOWS (arcobaleni). 

Le altre sette lettere nella parola RAINBOWS rappresentano ciascuna 
un colore diverso. L'ultima lettera, S, e gialla. Notare che anche il 
messaggio READY (pronto) e in giallo unitamente al cursore. Quando i 
comandi dei colori sono inseriti net messaggio PRINT, il VIC ricorda 
/'ultimo colore usato e continua ad utilizzarlo. 



Per riportare il cursore al normale colore blu, tenere abbassato |*j|t] e 
premere JWIj . Se lo si desidera, provare a stampare (PRINT) alcuni 



messaggi colorati a scelta. Si avra cosi la possibility di vedere altri usi dei 
tasti dei colori in brevissimo tempo. Ma ora c'e un annuncio 
importante . . . 



EXTRA!! EXTRA!! 

II Color Show VICe in arrivo!! 



33 



Come cambiare i colori dei margini 
e dello schermo 

Ora che si sa come cambiare il colore delle lettere e dei segni grafici, si 
vedra come cambiare i colori dello schermo e dei margini. E' possibile 
visualizzare 255 diverse combinazioni di colori per il margine e per lo 
schermo. Per assicurarsi che il VIC e pronto per la prossima operazione, 



premere fjffftj e quindi ■ ■ , BW1 per cancellare lo schermo. 

Successivamente battere queste righe: 



NEW 



e premere 



(Premere 
seguenti). 



al termine di ciascuna delle righe 




1FORX = 1 TO 255 
2POKE 36879, X 




3PRINT " * POKE 36879," X 



4FOR T = 1 TO 1000: NEXT T 



5NEXTX 




34 



Osservare queste righe una volta battute e vedere se corrispondono a 
cid che e indicato su questa pagina. Se ce ne sono alcune che non 



corrispondono, ribatterle dall'inizio. Usare il tasto u&jffl per ritornare su 

qualsiasi riga che si vuole ribattere. 

Una volta soddisfatti in quanto tutte le righe sono corrette, prendere un 
pezzo di carta ed una penna o matita e sistemarseli accanto. Quindi 
battere: 

RJ [u] In] e premere 

Lo schermo dovrebbe incomiciare ad arrossire e a lampeggiare. 
II margine cambia colore. II fondo cambia colore. Anche il piccolo 
messaggio nella parte superiore dello schermo sta cambiando i suoi 
colori. II VIC sta cioe visualizzando 255 diverse combinazioni di colori. 
(C'eunerroredisintassi in una delle righe? Ribatterequellarigaequindi 
battere: 



RUN 



di nuovo) 



Mentre il VIC sta lavorando, se si nota una particolare serie di colori che 
sembra interessante, annotare il numero di quella combinazione. 
Cambia soltantoil numero alterminedel messaggio stampato. Lascritta 
«POKE 36879» rimane inalterata. (Di tanto in tanto non sara possibile 
leggere il messaggio in quanto e nello stesso colore del fondo. Puo 
succedere! Le lettere ed i numeri appariranno dopo alcuni lampeggi 
ulteriori). II VIC dispone di otto colori per il margine, di 16 colori per il 
fondo e di otto colori per i caratteri. E' possibile inserire i caratteri di tutti 
gli otto colori su qualsiasi fondo. Cid consente di esplorare 
numerosissime combinazioni. 

Se si vuole riportare lo schermo si colori originali, basta tenere 



abbassato il tasto 



e battere 



La riga due neM'esempio suddetto e responsabile del cambiamento 
dei colori del VIC. La riga contiene un comando POKE. Ogni comando 
POKE ha due valori numerici che il VIC usa: 




35 



II primo numero (in questo caso 36879) e la locazione di memoria 
(pensare ad una piccola casella contrassegnata 36879) nella quale si va 
ad inserire (POKE) il secondo numero, X. La locazione di memoria 36879 
e il punto in cui il VIC memorizza la sua informazione relativa a quali 
devono essere i colori del margine e del fondo. Ciascun valore di «X» 
corrisponde ad una diversa combinazione di colori che il VIC pud 
visualizzare. Per questo esempio, «X» iniziacon il valore 1, quindi passa 
a 2, 3, e cosi via fino ad un valore di 255. 



/ 


/ 


I 




/ 


Locaz. di 

memoria 

36877 


/ 





Locaz. di 

memoria 

36878 



/ 


/ 


I 




/ 


Locaz. di 

memoria 

36880 


/ 



UN ESEMPIO DI POKE 36879, 8 



Per facilitare in questa ricerca delle combinazioni di colori perfette, 
ecco la tabella dei valori POKE (valori «X») e dei colori del margine e del 
fondo corrispondenti. La tabella fornisce i valori POKE che producono 
tutte le combinazioni di questi colori. I valori POKE sono in sequenza 
con incrementi di otto. I numeri mancanti sono i valori POKE che 
provocano I'inversione e cioe la presentazione in negativo dei caratteri 
visualizzati. 



36 



Combinazione dei colori del 
(Margine e dello schermo) 







Margine *& 












o 


IT 
anco) 


o 

w 
Q W 


CD 

5? 


«:& 


CD 

z"2 


=>S 


o 
_i re 


Schermo 


_l ® 

me. 


SS. 


lli 2 
DC PS 


o£ 


— i ° 


DC .£> 


mS. 


£o 


NERO 


8 


9 


10 


11 


12 


13 


14 


15 


BIANCO 


24 


25 


26 


27 


28 


29 


30 


31 


ROSSO 


40 


41 


42 


43 


44 


45 


46 


47 


BLU-VERDE 


56 


57 


58 


59 


60 


61 


62 


63 


PORPORA 


72 


73 


74 


75 


76 


77 


78 


79 


VERDE 


88 


89 


90 


91 


92 


93 


94 


95 


BLU 


104 


105 


106 


107 


108 


109 


110 


111 


GIALLO 


120 


121 


122 


123 


124 


125 


126 


127 


ARANCIO 


136 


137 


138 


139 


140 


141 


142 


143 


ARAN. CHIARO 


152 


153 


154 


155 


156 


157 


158 


159 


ROSA 


168 


169 


170 


171 


172 


173 


174 


175 


AZZURROCHI. 


184 


185 


186 


187 


188 


189 


190 


191 


PORPORA CHI. 


200 


201 


202 


203 


204 


205 


206 


207 


VERDE CHI. 


216 


217 


218 


219 


220 


221 


222 


223 


AZZURRO 


232 


233 


234 


235 


236 


237 


238 


239 


GIALLO CHI. 


248 


249 


250 


251 


252 


253 


254 


255 



Colorazione dello schermo 

A questo punto e bene prendere tempo per dedicarsi a combinare i 
colori, i caratteri ed i grafici del VIC in unagradevole visualizzazione 
cromatica. Basta soltanto immettere alcune righe nel VIC per vedere 
comparire eventi spettacolari. 

Se alcuni esempi stanno ancora rimbalzando o agitandosi sullo 
schermo, occorre interromperli battendolnjg. Cancellare lo schermo. 
Quindi battere queste righe misteriose. 



NEW 



37 



1 L = INT(RND(1)*500) + 1 



2 C = INT(RND(1)*8) + 1 




3 POKE 7680 + L, 160 





4 POKE 38400 + L, C 



V E questa? -C ' 



5 GOTO 1 

Controllare I'esempio per accertarsi che tutte le righe siano battute 
come indicato. Se sono tutte corrette, cancellare lo schermo e battere 

|~R~| fjj| [~n1- Lo schermo dovrebbe ora esplodere in una miriade di 

colori. 

II VIC ha colpito ancora! Con solo alcune operazioni sui tasti sta ora 
spostando colori dappertutto. Cosa e successo? 

In termini semplici, la riga 1 e 2 scelgono casualmente dove finira il 
colore sullo schermo (L sta probabilmente per Location = posizione) e 
di quale colore si trattera (C per colore). La riga 1 genera da 1 a 500 
numeri. La riga 2 genera un numero da 1 a 8. 



38 




La riga 3 inserisce (POKE) un carattere sullo 
schermo. II valore 7608 rappresenta la posizione 
di partenza sullo schermo, I'angolo superiore 
sinistro. II valore POKE 160 e un quadratino pieno 
(sostanzialmente uno spazio in negativo). 

La riga 4 inserisce (POKE) il colore sul carattere. II valore 38400 
rappresenta la locazione di memoria del componente cromatico del 
carattere in posizione di partenza. 



Posizioni dello schermo 



SUGGERIMENTO VIC: 

Per inserire (POKE) caratteri sullo schermo, occorre inserire (POKE) la 
posizione dello schermo ed il colore di quella posizione per ciascun 
carattere. Le posizioni dello schermo iniziano a 7680. Le posizioni dei 
colori iniziano a 38400. Vedere I'Appendice per la mappa di memoria dello 
schermo. 



Occorre a questo punto cercare di inserire (POKE) altri valori sullo 

schermo. 

Cambiare il 160 nella riga 3 in qualsiasi numero compreso fra e 255. 

PROVARE - ed ammirare la personality piena di colori del VIC. 

Ci sono 506 possibili posizione sullo schermo (tabella). E' possibile 
scrivere sullo schermo qualsiasi parola, lettera, frase, segno grafico o 
qualsiasi cosa, ogniqualvolta lo si desidera. Basti pensare che lo 
schermo si compone di 506 caselle come questa - ciascuna delle quali 
ha un proprio numero. 

Sotto con gli esperimenti! Ma e ora il momento di ritornare ai tasti di 
controllo del colore. 



SUGGERIMENTO VIC: 

Per riportare il VIC ai normali colori di margine e dello schermo, battere 
questa istruzioni POKE: 

POKE 36879, 27 



39 



Colori casuali 



Si cerchera ora di capire come si pud fare in modo che il VIC scelga i 
colori da inserire sullo schermo. Cancellare innanzitutto lo schermo e 



battere queste righe (premere 



dopo ciascuna riga): 



NEW 



1 PRINT " 



2 GOTO 1 



RUN 




Lo schermo dovrebbe riempirsi di uccelli blu e rossi. Indovinate adesso 
dove stanno volando? Perche si muovono effettivamente! 




40 



Ma lasciamoli volare per un po'. Per interromperne il volo, premere ^). 

Ora che si sa come creare uccelli, cancellare lo schermo e battere queste 
righe: (Ricordarsi di battere ^^^^^^H al termine di ciascuna riga). 



NEW 



1 a$= IBSBODBQ 



2 N = 




4 PRINT B$ " ^©^ r*-\ "; 



5 GOTO 2 




41 



Osservare le righe non appena vengono immesse. Accertarsi che 
corrispondano a quanto qui indicate Una volta pronti, cancellare lo 



schermo e battere RUN . Seci sono errori, ribatterel'intera riga e 



battere di nuovo |_RJ |_U| |_N). Fallo ancoraSAM (scusa, VIC!!). Uccelli! 

Uccelli! Ovunque!! In ogni colore dell'arcobaleno! Lo schermo 
dovrebbe riempirsi di stormi di uccelli «arcobaleno». Notare che ci sono 
degli spazi vuoti nello stormo. E questo perche in quegli spazi il VIC sta 
visualizzando uccelli bianchi. Se si vuole che questi uccelli invisibili 
compaiano, occorre cambiare il colore del fondo. (Come? Occorre 
inserire - POKE - un numero nella locazione 36879). 

Naturalmente se si cambia lo sfondo in un altro colore, ad esem pio blu, 
comparirannogli uccelli blu. Provare per credere. PremereE5||quando 
si vuole far smettere agli uccelli di volare. 

L'ultimo esempio ha usato qualche carattere interessante del VIC perfar 
comparire gli uccelli sullo schermo e per cambiarne il colore. Vediamo 
I'esempio riga per riga. Sulla prima riga: 

1 a$ = "■ Est] Lin ESQ " 

I comandi dei colori formano una lunga stringa di caratteri e sono 
inseriti nella memoria del VIC in una posizione denominata A$. Si puo 
pensare a A$ come ad una scatola in cui possono essere inserite 
stringhe di caratteri. La prima posizione della scatola A$ contiene il 

carattere di comando 

comando 



L'ultima posizione contiene il carattere di 



r <fe 



^»ms® 





42 



La riga successiva e: 

2N = INT(RND(1)*8) + 1 

Questa riga genera un numero intero positivo casuale da 1 a 8 ed 
inserisce quel numero in «N». «N» e il posto nella memoria del VIC 
che pu6 essere usato per memorizzare i numeri. II VIC sa che «N» e un 
posto in cui memorizzare i numeri dato che al termine del nome non c'e il 
segno del dollaro ($). 

Nella riga uno, la locazione usata per memorizzare i comandi dei colori era 
denominata A$ e presentava il segno del dollaro al termine. II VIC sa che 
le locazioni i cui nomi terminano con il segno sel dollaro devono essere 
usate per memorizzare messaggi o stringhe di caratteri. 

Per ulteriori informazioni sul modo in cui 

|~i~| |"n| |"t] e R N D funzionano insieme per generare numeri 

casuali, vedere il Capitolo 7 di questo manuale. Per ora basta sapere che 
questa riga sta producendo numeri da 1 a 8. Visto il numero 8 sul lato 
destro del segno di uguale? Quel numero stabilisce quanti numeri 
casuali vengono generati. Se si dovesse cambiare il numero da otto a sei, 
verrebbe prodotto un qualsiasi numero da uno a sei. 

Hmmm . . . ed ora procediamo ulteriormente neM'analisi: 
3B$= MID$(A$,N,1) 



Questa riga crea una nuova «casella» denominata B$ ed inserisce un 
carattere di controllo. A$ contiene gli otto caratteri di controllo del 
colore. «N» e un numero casuale da uno a otto. Cosa fa MID$? Non fa 
altro che scegliere un carattere di controllo colore da A$ nella posizione 
«N-esima» nella stringa. Questo carattere viene inserito in B$. Si, ora ci 
sono tre piccole caselle all'interno del VIC, una denominata A$, una 
denominata «N» ed una denominata B$. Ogniqualvolta che il VIC arriva 
alia riga due, viene attribuitounnuovovalore a «N».Ciodetermina quale 
colore MID$ preleva ed inserisce in B$. 



IBQL inBQ 



43 



La quarta riga: 



4 PRINT B$ " V.#-' r #^ "; 



Questa riga dice al VIC di usare il colore che trova nella casella B$ e 
disegnare con esso le creature simili ad uccelli. II comando PRINT B$ 
crea lo stesso effetto che si avrebbe battendo un carattere di controllo 
colore specifico. Usando B$, comunque, e possibile fare in maniera che 
il VIC cambi il carattere del colore automaticamente. Quando «N» 
(riga 2) cambia, cambia anche B$ (riga 3) e cambiano pure i colori degli 
uccelli. 




La capacita del VIC di generare numeri casuali pud essere combinata 
con le sue caratteristiche grafiche, sonore e cromatiche in molti modi 
interessanti. Per esempio, possiamo rivisitare il Color Show del VIC ma 
casualmente e produrre contemporaneamente qualche rumore. 




44 



In questo ultimo esempio colori e suoni del VIC sono prodotti entrambi 
casualmente. Immettere le righeseguenti nel computer: 



NEW 



1POKE 36878, 3 



2C = INT(RND(1)*255) + 1 



3S = INT(RND(1)*50) + 175 



4POKE 36879, C 




5POKE 36875, S 



^ > Esecuzione j 

~~~~ L, dellanota •/ 

6FOR T = .1 TO 100: NEXT T ^ C Attesa ) 

7GOTO 2 



Le didascalie nei fumetti spiegano a sufficienza questa 
esempio. II Capitolo 5 si addentra piu in profondita a 
proposito della musica. Se si e pronti ad eseguire 



I'esempio, cancellare lo schermo e battere [Rj []J| [N 
quindi premere 



45 



\ 




/ / / 



Che meravigliosa combinazione di suoni e di colori! Naturalmente non e 
possibile aspettarsi che la musica casuale sia adatta ai gusti di tutti. 

Quando si vuole ferm are il f unzionamento di questa macchina dei colori 

e dei suoni, premere |f)ft| . Occorre quindi battere queste due righe per 

interrompere la nota che sta ancora suonando e ripristinare lo schermo 
del VIC ai suoi normali colori. 



POKE 36875, 



POKE 36879, 27 




Orae opportuno dedicare un poco di tempo a fare esperimenti. Provare i 
vari colori del VIC. Provare ad ottenere colori e musica. 



46 



I grafici da tastiera 



Una delle caratteristiche speciali del VIC 20 e la serie di tasti con i segni 
grafici. La maggior parte dei tasti rappresentano due caratteri grafici 
nella parte anteriore. E' possibile visualizzare questi segni grafici sullo 
schermo, oppure se si dispone di una stampante ad aghi Commodore, 
stamparli su carta unitamente a tutti gli altri simboli della tastiera. 

Per visualizzare il segno grafico sul lato sinistro del tasto, tenere 
abbassato il tasto Commodore mentre si preme il tasto contenente il 
segno grafico. Per visualizzare il segno grafico alia destra del tasto, 

tenere abbassato il tasto II e premere il tasto desiderato. 



SUGGERIMENTOVIC: 

Attenzione . . . se si premono contemporaneamente i tasti SHIFT e 
Commodore si passa immediatamente al modo maiuscole/minuscole in 
cui sono disponibili soltanto i segni grafici del lato sinistro. Per ritornare 

al modo per grafici precedente, premere di nuovo II e Q con- 
temporaneamente. 



II modo piu facile per usare i segni grafici del VIC consiste nel battere il 
tasto COMMODORE [3 oppure II unitamente al simbolo 



grafico che si vuole visualizzare dalla tastiera. Per esempio, battere 
quanto segue: 



Si dovrebbe vedere comparire sullo schermo un cuore blu. Provare a 
battere qualche altro tasto con segni grafici. Eccone alcuni che e 
possibile provare: 



47 



Nota: 
Le righee le 
barre compari- 
ranno in misure 
e incrementi 
diversi in modo 
da poter creare 
esattamente i 
caratteri grafici 
desiderati. 



Segni grafici sul 
lato sinistro 



Segni grafici sul 
lato destro 



H 


S 


■a 


Q 


H 


@ 


m 


W 


H 


S 


g 


n 


H 


B 


Bl 


N 



Notare che i segni grafici sul lato destro sono utili per creare tabelle, 
diagrammi e moduli gestionali. I segni grafici sul lato destro sono utili 
per creare illustrazioni, effetti di animazione . . . addirittura carte da 
gioco! 



I grafici nei titoli 



I segni grafici non sono limitati ai disegni animati ed ai giochi. 
E' possibile usare numerosi effetti speciali per mettere in evidenza titoli, 
tabella o diagrammi o evidenziare parole speciali nei programmi che 
contengono molto testo. II modo piu facile per evidenziare una parola 
o una frase consiste nei batterla in NEGATIVO. Battere semplicemente 



e la parola desiderata 



Per esempio: 



U \E @ CD s m 



ISHiEEIi 



RUN 




48 



Provare ora con alcuni spazi per creare una barra di titolo . 



lEiEiSQ 




QjQQ [h][1]|a]Id][l][D[n][1 



ED 



RUN 




Un altro modo per evidenziare una parola consiste nel disegnarle intorno 
un riquadro. Latecnicaecomequelladeldisegno. Assicurarsidi battere 
esattamente come indicato. 



101EE0"H@H0HHHSH 



RUN 




Lo schermo presenta una linea retta. La riga successiva comprende il 
titolo ed una riga verticale a ciascuna estremita per completare i lati del 
«riquadro». 



20 P 



IEIS0 




49 



Visto come si fa a costruire il riquadro del titolo? Ora per finire . 



I0IHIS0HSHEHB 
HEHEE1 K^rr^T^ 

SEE [^ 



SUGGERIMENTOVIC: 

Per correggere il programma battere LIST e premere RETURN. 
E' possibile ritornare indietro per cambiare una riga che non e stata 
battuta esattamente usando i tasti CRSR e INST/DEL per tornare sull' 
errore e ri battere. Dopo aver effettuato una modifica o una correzione, 
premere RETURN per immettere la modifica in quella riga . . . oppure . . . 
possibile ribattere qualsiasi riga e qualsiasi commento e premere 
RETURN per modificarla. 



Ecco un altro modo per evidenziare una parola o un titolo, animandoli in 
modo che sembrino lampeggiare parecchie volte quando compaiono 
sullo schermo del televisore . . . 



NEW 



10 FOR H = 1 to 250 



20PRINT " 




E LI H E ED LH] LI 



25FOR T = 1 TO 50: NEXT 



30PRINT " 

H] I] H E E CD S LI 



35FOR T = 1 TO 50: NEXT 



40NEXT H 



RUN 



Se il titolo non si sovrappone uniformemente, cercare di regolare la 
spaziatura all'interno delle virgolette. Per accelerare o rallentare il 
lampeggio, cambiare il numero nelle righe 25 e 35. 



50 



Provare questo programma: 

Battere questo programma esattamente come indicato e 
vedere cosa succede! 



10 PRINT" 



20 PRINT " ^ p " 
30 PRINT " CH E3 O " 



IDS- 



40 PRINT 



50 FOR T = 1 TO 300: NEXT 
60 PRINT" 

70 PRINT" BOD" 
80 PRINT " E2 S " 
90 PRINT "[][][]" 

100 FORT = 1TO300:NEXT 

110 GOTO 10 



Per interrompere il programma 
premere il tastoEE 




52 




Uccelli volanti 

Questo capitolo spiega come usare le capacita grafiche del VIC per 
creare illusioni di caratteri che si muovono sullo schermo. 

L'illusione di movimento che e possibile creare con il VIC e anche detta 
animazione. L'animazione puo rendere qualsiasi prograrama - dai 
giochi ai programmi gestionali-divertenteed interessante. 

Si iniziera immettendo le righe seguenti: 



Tenere abbassato il tasto II e premere il tasto gg 
[N] [e] [Wj e premere il tasto 




Per far comparire gli uccelli 

TENERE 

ABBASSATO PREMERE 



E][Q][E 



Per saperne di piu sugli „uccelli" 
vedere Capitolo 3 „Grafici". 



m E E EE BE 1 IS 1BBE ^-^jU 

e premere 



[3] ■ PRINT"g/'^0 « 

e premere 




e premere 



VAttendereV 



[5] 



lG][0][T][Ol 



m 



53 



Cio' che e' stato battuto dovrebbe 
comparire come segue: 



1 PRINT" | 

2 FORT = 1 TO 150: NEXTT 

3 PRINT "[Tj 

4 FORT = 1 TO 150: NEXTT 



5 GOTO 1 



Osservare cio che e stato battuto. Corrisponde a quanto riportato in 
figura? In caso contrario correggere le righe inesatte. Quando tutto 
corrisponde battere: 



® HD \E\ e p remere 



SUGGERIMENTO: 



E' possibile reimmettere o cambiare qualsiasi riga 
battendoladaccapo. Lasecondabattituracancellera 
automaticamente e sostituira la prima. E' possibile 
cancellare una riga battendone soltanto il numero 

seguito da 



Osservare la prima illusione o animazione col VIC. La creatura «uccello» 
va saltando e svolazzando nell'angolo superiore sinistro dello schermo. 
Sembra che usi una notevole potenza delle ali ma deve esserci anche un 
forte vento di prua. L'uccello non riesce a spostarsi. 




E' possibile rendersi conto del perche sembra che l'uccello muova le 
ali? Studiare I'esempio per un momento: il segreto di pressoche 
qualsiasi effetto di animazione sul VIC sta in questo esempio. Come e 
possibile creare queste illusioni di movimento e facilmente descritto in 
breve. Ecco un breve sommario di come fare in modo che pressoche 
qualsiasi carattere si agiti, lampeggi, si muova oscillando, ecc. 



54 



Innanzitutto occorre visualizzare il carattere o la combinazione di 
caratteri in una posizione sullo schermo. 




Secondo, attendere brevemente, servendosi di un'interazione di ritardo 
del tipo FOR-NEXT. Esempi di istruzioni di ritardo sono indicati nelle 
righe 2 e 4 del programma degli uccelli volanti. Queste righe dicono al 
VIC di contare da 1 a 150. II VIC pud contare rapidamente fino a 150. 
Provareacambiare 150 in 500 (o in qualchealtronumero)evederecosa 
succede. 

Terzo, visualizzare il carattere di nuovo ma alterandone qualche parte. 
A causa del precedente ritardo, I'occhio e ingannato e si pensa di aver 
visto un «movimento». 




Quarto, attendere ancora. Sulla base dell'effetto che si sta cercando di 
ottenere, questa attesa potrebbe essere piu lunga o piu breve della 
prima. Neli'esempio, i ritardi tra le varie comparse sullo schermo erano 
identici. 

Quinto (la parte facile), ripetere le prime quattro fasi appena citate. Cid si 
effettua mediante il comando GOTO che dice al VIC di tornare indietro 
alia prima riga e di ripartire daccapo. In questo modo il programma 
stampa I'uccello con le sue ali «in alto», conta fino a 150 quindi stampa 
I'uccello con le sue ali «abbassate» e torna indietro ricominciando 
daccapo. 

Nella prima e nella terza fase, dove il carattere viene visualizzato, e 
spesso necessario assicurarsi che non rimangano sullo schermo 
vecchie parti del carattere. Neli'esempio deM'uccello, questo problema 

e risolto inserendo il carattere di cancellazione dello schermo ( 

) in ciascun messaggio. II carattere cancella lo schermo e riporta il 

cursoreal puntodipartenza in modo che ciascunaversione deM'uccello 
(conlealisollevateecon le ali abbassate)compaianeH'angolosuperiore 
sinistro. 



55 



E' possibile fare ulteriori esperimenti con questo esempio. Premere 

|g per interrompere il battito delle ali e cambiare il limite superiore di 

conteggio (150) delle righe 2 e 4. Provare a cambiare soltanto un valore 
lasciando I'altro a 150. L'uccello comincia a librarsi in aria? Provare un 
valore 50 in entrambi i punti. L'uccello vola piu velocemente? Cosa 
succede con un limite superiore di 500? E di 1000? 



Hmmm . . . l'uccello 
sembra rallentare 




Premere 



Si sa gia che e possibile cancellare lo schermo tenendo abbassato 
I e premendo il tasto ftfjflifl . Dall'interno di un programma e 
possibile dire al VIC di cancellare lo schermo battendo: 



PRINT 



Quando si immette un messaggio di stampa (PRINT) e si premono i due 

tasti (I l e |f$fl ) cne si usano per cancellare lo schermo, nel 

campo del messaggio compare I'immagine in negativo del cuore. 
Questo simbolo e un segnale per dire al VIC che quando un messaggio 
viene stampato (PRINT) lo schermo deve essere cancellato in quel punto 
nel messaggio ed il cursore deve essere rinviato al punto di partenza. II 
punto di partenza e naturalmente I'angolosuperiore sinistro dello 
schermo. 





56 



Provare direttamente I'istruzione PRINT. Batterla nel VIC. Lo schermo si 
cancella? 



Batterer PRINT « \j*\ »; 




Ora si tratta di creare disordine sullo schermo. Inserire alcuni uccelli, 
caratteri, numeri e simboli grafici dappertutto. Quando lo schermo e 
sufficientemente pieno, battere questa riga: 

PRINT «\s\ 




Notata la differenza con I'altra istruzione PRINT? Si, questa volta il 
cursore e tomato al punto di partenza ma lo schermo non si e cancellato. 

mentre si batte fljfljfl nel campo del 



Se non si preme il tasto 



messaggio, compare I'immagine S in negativo invece del cuore. La S 
in negativo dice al VIC di riportare il cursore in posizione di partenza ma 
non di cancellare lo schermo. 



Battere 




Pallina rimbalzante 

Cancellare lo schermo ed immettere quanto segue nel VIC: 
(Premere ^^^^^Hdopo aver battuto ciascuna riga). 



NEW 
1 PRINT " 




57 



2 GOTO 1 



RUN 

Quando viene battuto RUN, lo schermo dovrebbe riempirsi con colonne 
di palline blu. Lasciare scorrere le palline per un poco quindi premere 



La pressione di gjjQ fa si che compaiano i messaggi BREAK e READY. 
Battere ora: 



1 PRINT" 




I duecaratteri di immagine in negativosono i simboli che il VIC inserisce 
in un campo di messaggio quando si tiene abbassato Bni e si premono 



tasti 








carattere 
>in negativc 
Idisattivatq/ 



Dopo aver battuto la nuova riga, dire al VIC di eseguire (RUN) questo 
esempio: 

Battere: RUN 

Cosa e successo alle palline? Premere il tasto ^S per rallentare la 

stampa (PRINT). Ci sono ora colonne di rettangoli blu con fori bianchi 
Perche? 



58 




L'inserimento del carattere di controllo RVS/ON davanti al simbolo 
della pallina fa si cheil VIC /nvertaicoloriusati pervisualizzareciascuna 
pallina. La pallina e normalmente blu ed e circondata da un fondo 
bianco. II modo negativo ha reso lo sfondo blu e la pallina bianca. 




L'inserimento del carattere di controllo RVS OFF dopo la pallina, dice al 
VIC di ripristinare I'inversione del colore del fondo e dei caratteri. Di 
invertire cioe il negativo e tornare al punto di partenza. Se non e usato 
RVS/OFF, si produce un effetto interessante. 



Premere VmA ed immettere questa riga: 



1 PRINT 



Battere: RUN 




Quando non viene usato RVS/OFF, tutti gli spazi sullo schermo sono 
resi in negativo e diventano blocchi pieni. II VIC pud trasformarsi in un 
interessante creatoredi profili.Si puoaddiritturapensaredi disegnare i 
propri tessuti o la carta da pareti o le mattonelle del pavimento con il VIC. 
Cosa non si pud pensare di fare con il VIC? 



59 



I tasti del cursore 



I quattro tasti di controllo consentono di spostare il cursore ovunque 
sullo schermo. E' possibile inserire comandi di controllo del cursore nei 
campi del messaggio delle istruzioni PRINT per facilitare il posiziona- 
mento dei caratteri dei messaggi che si stanno stampando. Qui c'e 
I'esempio degli uccelli deM'inizio del capitolo con I'aggiunta di alcuni 
comandi del cursore. 

Cancellare lo schermo ed immettere una nuova visualizzazione di 
uccelli: 



NEW 

1 print" (Qjm^^mmm " 





Questo riga usa parecchi comandi del cursore (verso il basso, verso 
destra, verso sinistra) per animare e spostare le immagini degli uccelli. 
Si vedranno i movimenti quando si esegue (RUN) I'intero esempio. 

2 FOR T = 1 TO 150: NEXT T « WndereJ 

3 print" r»^ mCDIU "; 




Questa riga contiene tre caratteri di controllo del cursore A SINISTRA. 
4FORT = 1 TO 150: NEXTT 

5 print" mcDm"; 





3 spazi 



6FORT = 1TO150:NEXTT 
7 GOTO 1 



60 



Battere e controllare I'esempio a fronte del testo stampato. Quando si e 
pronti, battere RUN ed osservare I'uccellino. 




I caratteri di controllo del cursore in questo esempio spostano I'uccello 
verso il basso in diagonale sullo schermo. Proprio come una gazza! 

Ora vale la pena di fare qualche esperimento. Provare ad inventare 
un'altra creatura e a spostarla attraverso lo schermo. 



Animazione con POKE e PEEK 

Finora si e imparato ad usare I'istruzione PRINT con i comandi del 
cursore ed i comandi del colore per spostare gli oggetti sullo schermo. 
Questo e probabilmente il modo piu veloce per spostare gli oggetti 
usando il BASIC, ma non e il piu brillante. La maggior parte dei giochi 
richiede che I'oggetto si muova aM'interno dello schermo e reagisca agli 
altri oggetti presenti sullo schermo stesso. II solo modo per programmare 
cio e I'uso delle istruzioni PEEK e POKE. 

Per usare questa tecnica, occorre per prima cosa conoscere il concetto 
del video a matrice di punti. Ciascuna posizione dello schermo corris- 
ponde ad una posizione aM'interno della memoria del VIC (RAM). Dato 
che ci sono 506 possibili posizioni sullo schermo per i caratteri, ci sono 
di consequenza 506 locazioni di memoria destinate a contenere i 
carattere stessi. E dato che ciascuna locazione di memoria puo con- 
tenere un numero da a 255, per ciascuna locazione di memoria ci sono 
256 possibili valori. Questi sono i 256 diversi caratteri che il VIC puo 
creare (vedere Appendice H). Un numero in una posizione della memoria 
dello schermo e un codice per il carattere in quella posizione. 

La memoria dello schermo nel VIC inizia normalmente alia locazione 
7680, e termina alia locazione 8185. La locazione 7680 corrisponde 
all'angolo superiore sinistro dello schermo. La locazione 7681 e la 
posizione del successivo carattere alia sua destra e cosi via lungo la f ila. 
La successiva locazione che segue I'ultimo carattere della fila e il primo 
carattere della fila successiva piu in basso. 



61 



Supponiamo ora di voler controllare una pallina che rimbalza sullo 
schermo. La pallina e al centro dello schermo, alia colonna 1 ed alia f ila 

10 (I'angolo superiore sinistro e la colonna zero, fila zero). La formula 
per calcolare la posizione di memoria sullo schermo e: 

P = 7680 + X + 22*Y 

dove X e la fila e Y e la colonna. Pertanto, la posizione di memoria della 
pallina 7680 + 10 + 220, ossia 7910. Cancellare lo schermo e battere: 

POKE 36879,8 

Cid cambia il colore dello schermo rendendolo completamente nero. 
Ora battere: 

POKE 7910,81 

Al centro dello schermo compare una pallina! Si e inserito cioe il 
carattere'direttamente nella memoria dello schermo senza usare I'istru- 
zione PRINT. 

Lapallinacomparsaerabiancamacomunquec'eun modopercambiare 
il colore di un oggetto in qualsiasi locazione sullo schermo, anche 
usando i POKE. Battere: 

POKE 38630,3 

11 colore della pallina cambia in blu-verde. Per ogni punto sullo schermo 
del VIC ci sono due locazioni di memoria, una per il codice carattere e 
I'altra per il codice del colore. La mappa della memoria del colore inizia 
alia locazione 38400 (angolo superiore sinistro) e continua per 506 
locazioni. I codici dei colori da a 7 daranno gli otto colori numerati da 
1 a 8 sulla tastiera. (Altri numeri daranno risultati apparentemente strani. 
Per una spiegazione completa vedere la Guida di Riferimento del 
Programmatore VIC). 



62 



Mappe di memoria dello schermo 



Questa 
6 la 
locazione 
7681. 

"Questa 

•e la 

locazione 
di memorial 

'7680 

Questo 
eil 

numero 
7702 



Locazione 
,7910 

(una 
" pallina) 



CODICI DEI CARATTERI 
















































































































































































































































































































































































































































































81 





















































































































































































































































































































































































































































































































































































CODICI DEI COLORI 


























































































































































































































































































































































































































































































3 











































































































































































































































































































































































































































































































































































63 



Ecco un breve programma per far rimbalzare una pallina sullo schermo, 
seguito da una spiegazione dettagliata. 



10 PRINT 



20 POKE 36879,9 

30 POKE 36878,15 

40 X = 1 

50 Y = 1 

60 DX = 1 

70 DY = 1 

80 POKE 7680 + X + 22*Y, 81 

90 FORT = 1 TO 10: NEXT 
100 POKE 7680 +X + 22 *Y, 32 
110 X = X + DX 

1 20 I F X = OR X = 21 TH EN DX = -DX: POKE 36876, 220 
130 Y = Y + DY 

140 IF Y = OR Y = 22 THEN DY = -DY: POKE 36786, 230 
150 POKE 36876,0 
160 GOTO 80 

La riga 10 cancella lo schermo e la riga 20 rende lo schermo nero con un 
margine bianco. La riga 30 regola I'intensita del generatore di suoni al 
livello piu elevato. 

Le variabili X e Y usate nelle righe 40 e 50 tengono nota della posizione 
corrente di fila e di colonna della pallina. Le DX e DY usate nelle righe 
60 e 70 sono la direzione orizzontale e verticale del movimento della 
pallina. Aggiungendo un +1 al valore X, la colonna viene spostata di 
1 verso destra. Quando viene aggiunto -1 a X, la colonna della pallina 
viene spostata di 1 posizione verso sinistra. +1 aggiunto a Y sposta la 
pallina in basso di una fila, e -1 aggiunto a Y sposta la pallina verso I'alto 
di una fila. 

La riga 80 inserisce il carattere della pallina sullo schermo nella sua 
posizione corrente. La riga 90 e un'interazione di ritardo che lascia la 
pallina sullo schermo quanto basta perche I'occhio la possa vedere. La 
riga 100 cancella ora la pallina inserendo uno spazio (codice di 32) dove 
si trovava sullo schermo. 

La riga 1 1 aggiunge il fattore di direzione a X. La riga 1 20 si accerta che 
la pallina raggiunga una delle pareti laterali, invertendo la direzione ed 
emettendo un segnale acustico se c'e un rimbalzo. Le righe 130 e 140 
fanno lo stesso per le pareti superiore e inferiore. 

La riga 150 esclude il suono, eventualmente presente, per concludere 
I'effetto sonoro del rimbalzo. La riga 160 riporta il programma alio 
schermo per visualizzare e spostare la pallina di nuovo. 



64 



E' bene giocare un poco con questo programma. Cambiando il numero 
nella riga 80 da 81 ad uno qualsiasi altro codice di carattere, e possibile 
cambiare la pallina in qualsiasi altro carattere. Se si cambia DX o DY in 0, 
la pallina rimbalzera diritta anziche in diagonale. 

E' possibile aggiungere un po' di intelligenza a questo programma. 
Finora la sola cosa che viene controllata sono i valori di X e Y che rappre- 
sentano i confini dello schermo. Aggiungere le righe seguenti al 
programma sopra indicate (Basta battere queste righe per aggiungerle 
automaticamente). 



32 FORL = 1 TO 10 

35 POKE 7680 + INT (RND (1) *506), 102 
37 NEXT 

155 IF PEEK (7680 + X + 22*Y) = 102 THEN DX = -DX: DY = -DY: 
POKE 36876, 180: GOTO 110 



Le righe da 32 a 37 inseriscono 10 caratteri grigi sullo schermo in posi- 
zioni casuali. La riga 155controlla(«PEEK») che la pallina siasul punto 
di rimbalzare in un blocco grigio ed in questo caso ne inverte la dire- 
zione. 

Vedere I'Appendice H e I per ulteriori informazioni suM'animazione. 



65 



Provare a battere 
questo programma: 



Battere questo programma esattamente come indicate e 
vedere cosa succede! 



10 PRINT" 

20 FOR I = 1 TO 5 

30 POKE 36873+1,0 

40 NEXT I 

50 PRINT "WHICH VOICE (1-4)?" 

60 PRINT "IF DONE, ENTER 0" 

70 INPUT N 

80 IF N=0 THEN END 

90 PRINT "WHICH PITCH (128-254)?' 
100 INPUT P 
110 POKE 36878, 4 
120 POKE 36873 + N,P 
130 FOR J = 1 TO 2000: NEXT N 
140 GOTO 10 



Per interrompere il programma 
premere il tastoE 





68 



Creazione delle note 



Ci si potra anche non credere ma col VIC e possibile creare musica ed 
effetti sonori! Questo capitolo introduce alia musica ed ai suoni che il 
VIC pud generare. Esso insegnera a produrre questi suoni e ad eseguire 
qualsiasi tipo di musica da Bach - al rock. Per cui e bene sistemare i 
candelabri sul televisore e dare inizio al concerto! 

Per prima cosa si imparera a suonare una nota: 

Tenere abbassato il tasto HI e premere il tasto flfji 

[N"l [E"l [Wl e premere i I tasto 
e premere II 

s m k e m ■ [e] ® amain as 

e premere 



A questo punto si dovrebbe sentire un tono proveniente all'altoparlante 
del televisore. In caso contrario cercare di regolare il volume del tele- 
visore nel modo normale, in modo che sia confortevole . . . come la 
musica di uno show della TV. 

E'statoappenasuonatoilDocentrale*, una delle 128 note del repertorio 
di VIC! Per interrompere il tono, battere: 

Ora possiamo cercare di scoprire quante note il VIC pud suonare: 
Battere NEW e premere 




Ecco la corrispondenza fra la notazione 
italiana e quella anglosassone 
delle note musicali: 



DO = C Ml = E 
RE = D FA = F 



SOL = G 
LA = A 



SI = B 



69 



Battere ora questo programma: 

1 POKE 36878, 15 

2 FOR I = 128 TO 255 

3 POKE 36875, I 

4 FORD = 1 TO 100 

5 NEXTD 

6 NEXT I 

7 POKE 36875, 




E' opportuno dedicare a questo punto un po' di tempo per osservare lo 
schermo del VIC e vedere se tutte le righe appaiono esattamente come 
quelle indicate nel programma. Se qualche riga e sbagliata, basta 
ribatterla di nuovo. Assicurarsi di comprendere il numero di riga. II VIC 
sostituira automaticamente la nuova riga alia precedente versione. Per 
ottenere un listato delle righe nel programma battere: 



LISTe premerel 

Se tutte le righe sono OK, battere: 

RUN e premerel 

e a questo punto si udranno tutte le 128 note che il VIC puo suonare con 
questa voce. (In caso contrario ricontrollare le righe battute). Se si 
vogliono ascoltare di nuovo le note, battere: 

RUN di nuovo e premere 

Ora che si sono udite le note che il VIC puo creare, verra fornita qualche 
spiegazione sul modo in cui il VIC procede. 

AH'interno del VIC, il Video Interface Chip (che da al VIC il suo nome) 
si occupa sia del suono che delle immagini e consente al VIC di tras- 
mettere suoni all'altoparlante del televisore. II volume ed il suono 
possono essere variati dalla regolazione di volume sul televisore o dalla 
tastiera del VIC. 



70 



Le quattro voci del VIC 



II VIC ha quattro voci . . . cioe pud «cantare» quattro diverse note nello 
stesso tempo! Si potrebbe pensare a queste voci come quelle di un 
contralto, di un tenore e ad un rumore. Ciascuna delle voci ha un parti- 
colare «numero di controllo altoparlante». Usando questo numero si 
puo attivare I'altoparlante ed usarlo per creare una note musicale o un 
effetto sonoro. Per far cid si usera la parola POKE. 

I quattro numeri degli altoparlanti del VIC sono: 

36874 (altoparlante 1 - musica) 

36875 (altoparlante 2 - musica) 

36876 (altoparlante 3 - musica) e 

36877 (altoparlante 4 - rumore) 

II numero di controllo del volume e 36878. 




36874 (contralto) 





36875 (tenore 



36876 (soprano) 





36877 (rumore) 
altoparlante 1 



36878 (volume) 



Per eseguire una nota, battere POKE ed il numero di altoparlante, una 
virgola ed un numero che rappresenta la nota che si vuole eseguire. 



Per esempio, battere: 
POKE 36874, 128 e premere 



71 



Si ecosi appenasuonato lanota 128 usando I'altoparlante 36874 con la 
prima voce (la piu bassa). D'ora in poi^i chiamera questo altoparlante S1 
(abbreviazioneperaltoparlante 1); ilsecondoS2; il terzoS3ed il quarto 
S4. S2 canta le note piu alte di quanto non faccia S1 e S3 canta ancora 
piu alto di S2. S4 canta facendo un rumore . . . creando cioe «rumore 
bianco», usato per effetti sonori. 

Tra I'altro, per escludere una voce, basta eseguire POKE come in 
questo caso: 



POKE 36874,0 e premere 



Cio potrebbe sembrare un poco complicato per chi non ha pratica di 
«musica col computer» cosl abbiamo cercato di facilitare le cose. 
E' possibile risparmiare una notevole quantita di lavoro di battitura se si 
usa il seguente breve programma per tradurre i numeri degli altoparlanti 
in numeri piu corti. 

Battere quanto segue sul VIC esattamente indicator 
NEW 



51 = 36874 

52 = 36875 

53 = 36876 

54 = 36877 
V = 36878 



Cio consente di fare riferimento ai numeri degli altoparlanti mediante le 
abbreviazioni S1 , S2, S3, S4 e V (volume). Prima di procedere assicurarsi 
che ciascuna riga sia stata immessa correttamente. 
Ora si e pronti a creare suoni nel modo piu facile! 



POKEV 




72 



Cio inserisce (POKE) 10 nella locazione che controlla il volume. 

II controllo di volume pu6 accogliere qualsiasi valore traO e 15. Piu alto e 

il numero e maggiore e piu intenso sara il volume. 

POKE S1, 195 
POKE S2, 215 
POKE S3, 231 

Fare qualche prova con questo metodo per produrre i suoni. E' molto piu 
facile, non e vero? Quando si vuole interrompere il suono (per lasciare 
riposare le orecchie), eseguire POKE negli altoparlanti che si vogliono 
spegneree cioe: 

POKES1.0 
POKES2, 
POKE S3, 

Ecco una tabella dei valori che e possibile inserire (POKE) negli alto- 
parlanti per ottenere varie note: (Nota: I numeri al disotto di 128 
producono «silenzio»). 



Tabella delle note musicali 

(vedere tabella di) 

corrispondenza fra notazione italiana e notazione anglosassone a 

pag. 69) 



NOTA 


VALORE 


NOTA 


VALORE 


C 


135 


G 


215 


c# 


143 


G# 


217 


D 


147 


A 


219 


D# 


151 


A# 


221 


E 


159 


B 


223 


F 


163 


C 


225 


F# 


167 


C# 


227 


G 


175 


D 


228 


G# 


179 


D# 


229 


A 


183 


E 


231 


A# 


187 


F 


232 


B 


191 


F# 


233 


C 


195 


G 


235 


C# 


199 


G# 


236 


D 


201 


A 


237 


D# 


203 


A# 


238 


E 


207 


B 


239 


F 


209 


C 


240 


F# 


212 


C# 


241 



73 



Inserendo (POKE) i valori nelle prime tre voci (S1-S3) e possibile anche 
suonare dei motivi. («Rumore bianco» non e realmente appropriato per 
questo tipo di cose ... 

Sfortunatamente questo processo POKE e molto lento e noioso per 
I'uomo . . . mae un gioco da ragazzi per il VIC. Cosicche occorre inserire 
(POKE) in un programma e lasciare che il computer faccia il lavoro! 
Qualcuno vuole sentire «Flight of the Bumble Bee»? Oppure «Maple 
Leaf Rag »? 



II generatore di «rumore bianco» 

La quarta voce, S4, e numerata 36877. E' stata chiamata «rumore» in 
quanto e in effetti un generatore di «rumore bianco», usato per effetti 
speciali. Si provi ad esempio ad immaginare il ronzio di un aereo: 

POKE V, 6 
POKES4, 130 




E' un motore a quattro cilindri non e vero? Ora ecco il vento che sbatte 
tra le ali di un deltaplano. 

POKE S4, 240 

Non dimenticarsi di aumentare il volume con: 

POKE V, 4 

o qualsivoglia regolazione di volume si preferisca. Ora escludiamo il 
suono: 

POKE S4, 




74 



Cercare di sostituire I'istruzione DATA per suonare altri motivi. Per 
esempio, ecco un vecchio motivo popolare: 



300 DATA 225, 360, 225, 360, 225, 240 
310 DATA 228, 120, 231,360, 231,240 
320 DATA 228, 120, 231,240, 232, 120 
330 DATA 235, 720, 240, 360, 235, 360 
340 DATA 231 , 360, 225, 360, 235, 240 
350 DATA 232, 120, 231,240, 228, 120 
360 DATA 225, 480 
370 DATA-1 





Oppure se si preferiscono 
classici: 



DATA 217, 400, 213, 400, 223, 400 | 
DATA 227, 200, 234, 200, 230, 400 ) 
DATA 227, 200, 234, 200, 230, 400>j 
DATA 223, 400, 227, 400, 217, 400 ( 
DATA 213,600,-1 



Usare quante 
righesono 
necessarie per 
suonare motivi 
piu lunghi ma 
agli effetti di 
questo programma,. 
mantenersi su 
tre note per riga 



Uso del VIC come piano 



Inf ine, ecco un programma che consente di suonare la tastiera del VIC 
come un pianoforte: 

NEW 

10 REM STORE SOUND REGISTERS 
20 S2 = 36875 
30 V =36878 " 
40 POKES2, 

100 REM STORE B MAJOR SCALE 
110 FORN = 1 TO 8 
120 READ A (N) 
130 NEXTN 

140 DATA 223, 227, 230 
150 DATA 231, 234, 236 
160 DATA 238, 239 




75 




200 REM PLAY KEYBOARD 
210 POKE V, 3 

220 GET A$: IF A$ = " " THEN 220 
230 N = VAL(A$) ^ 

240 IF N =0 OR N = 9 THEN 300 

250 POKES2, 

260 FORT = 1 TO 25: NEXTT 

270 POKES2, A(N) 
280 GOTO 220 

300 REM ENDING MODULE 
310 POKES2, 



Ora, se si batte RUN (e si preme 

motivi sul VIC. I tasti nella fila superiore (quelli che portano i numeri) 
controllano le varie note: 



*******************, 



:************************, 



1 


2 


3 


4 


5 


6 


7 


8 


DO 


RE 


Ml 


FA 


SOL 


LA 


SI 


DO 



♦a"****************************************, 



r******** 



II VIC continuera a suonare la nota che si e battuta per ultima fino a che 
non se ne batte un'altra. Una volta fatto cio, premere o 9, e la nota 
cessera. Per ritornare di nuovo afar si che il VIC suoni il pianoforte, basta 
rieseguire (RUN) il programma. 



Provare quanto segue (cantando insieme se lo si desidera): 



1 1 5 


5 


6 


6 


5 


4 4 3 


3 


2 


2 


1 


5 5 4 


4 


3 


3 


2 


5 5 4 


4 


3 


3 


2 


1 1 5 


5 


6 


6 


5 


4 4 3 


3 


2 


2 


1 


9 










OPPURE 










3 3 4 


5 


5 


4 


3 


1 1 2 


3 


3 


2 


2 


3 3 4 


5 


5 


4 


3 


1 1 2 


3 


2 


1 


1 














Prendi e porta a casa, Ludwig! 



76 




Esecuzione di motivi 



Usando gli altoparlanti del VIC e la tabella dei valori delle note musicali, 
e possibile creare proprie canzoni trascrivere motivi da un libro di 
musica. II seguente programma indica come procedere: 

Battere: 



NEW 

10 S2 = 36875 
20 V =36878 



100 REM READ AND PLAY LOOP 
110 POKEV.15 

120 READP 

130 IF P = -1 THEN 200 « 

140 READ D 

II VIC cerca un'informazione 



150 
160 
170 
180 
190 




POKE S2, P ^ 
FORN = 1 TOD: NEXT N 
POKE S2, 

FORN = 1TO20:NEXTN 
GOTO 120 ■* 



200 REM IF NOTE -1 THEN STOP 
210 POKES1.0 
220 END 



300 DATA 225, 1000, 228, 1000, 231, 1000 
310 DATA 232, 10 00, 235, 100 0, 237, 1000 
320 DATA 239, 1000, 240, 1000 
330 DATA-1 



Nel primo gruppo di istruzioni abbiamo impostato le locazioni POKE per 
I'altoparlante o gli altoparlanti che stiamo usando, in questo caso 
I'altoparlante 2 ed il volume ed abbiamo immesso le nostre abbre- 
viazioni. II successivo gruppo di istruzioni inizia alia riga 100. 



77 



La riga 100 contiene una nota (REM) che spiega cosa si pensa che 
questa sezione debba fare. E' detta iterazione o «loop» in quanto la 
sezione leggera e suonera una nota quindi ritornera all'inizio e rifara lo 
stesso per un'altra nota. La riga 1 10 attiva il volume. 

Ora diremo al VIC di trovare la nota da suonare: 



Suggerimento VIC: 

I programmi nondevono iniziarecon la riga 1 oessere numerati perl. La 
maggior parte dei programmi inizia a 10 e procede ad incrementi di 10. In 
questo modo e possibile aggiungere righe in piu nel mezzo, se lo si 
desidera. Per esempio, se potrebbe aggiungere le righe 11, 12, ecc. trale 
righe 10 e 20. 



La riga 120 dice al VIC cercare nel programma e leggere (READ) le 
informazioni-chiamiamole P-sulla nota da suonare. Questa 
informazione e contenuta in una «istruzione misteriosa» che non 
abbiamo ancora scritto. Analogamente, la riga 140 dice al VIC di 
leggere (READ) informazioni - chiamiamole D - sulla durata della nota. 

Notare particolarmente la riga 130. La funzione di questa riga e di 
interrompere il programma quando e stata letta I'ultima nota. 
Senza qualche tipo di marcatore di «fine melodia» il programma 
cerchera di leggere note che non sono ancora state scritte e compirebbe 
un errore. La riga 130 dice che quando il VIC legge questo marcatore 
- un valore di -1 - non deve cercare di suonare questa nota ma di 
portarsi su un modulo di fine alia riga 200. Occorre ricordarsi di inserire 
pertanto -1 al termine della nostra «istruzione misteriosa». 

Ora che siamo in grado di far suonare al VIC una nota, interrompiamola 
e cerchiamone un'altra. 



78 



La riga 150 semplicemente inserisce (POKE) la nota che abbiamo letto 
(READ) nella riga 120 nella voce 1 mentre la riga 160 crea un ritardo della 
durata che abbiamo letto (READ) nella riga 130. Analogamente, le righe 
1 70 e 1 80 escludono la voce 1 per un breve periodo. La riga 1 90 riporta il 
VIC alia riga 120 per leggere (READ) la successiva nota. 

Ora occorre scrivere la sezione finale. Ricordarsi che il marcatore di 
«fine della melodia», -1 , rimanda il programma alia riga 200. 

La riga 210 esclude la voce e la riga 220 dice al VIC di interrompere 
I'esecuzione delle istruzioni di questo programma. 

Quantunque sia stata scritta una sezione finale, non abbiamo ancora 
finito. Dobbiamo infatti scrivere le nostre «istruzioni misteriose» per dire 
al programma quali note leggere (READ). Queste istruzioni misteriose 
sono dette istruzioni DATA in quanto contengono informazioni o dati. 
Le istruzioni DATA possono essere disposte ovunque in un programma. 
Ogniqualvolta il VIC incontra un'istruzione READ, cerca un'istruzione 
DATA da leggere (READ). 

Questo modulo contiene i DATA per una scala in Do maggiore. La riga 
300 contiene le prime tre note. II primo numero e il valore POKE per le 
prima nota, 225 - il Do basso. II secondo numero ne definisce la durata, 
1000 - circa 1 secondo. La riga 310 contiene le successive tre note e la 
riga 320 le ultime due. I valori sono presi dalla tabella delle note musicali 
che precede. 

Se le righe sembrano corrette, e possibile iniziare I'esecuzione (RUN). 
Si dovrebbe in questo caso udire una scala di Do maggiore pressoche 
precisa! Se ci sono una stonatura o due, provare a regolare i valori 
nell'istruzione DATA iniziando dalla riga 300. 

Ancora una volta: E' possibile inserire istruzioni DATA ovunque nel 
programma. Esse verranno lette (READ) una per una, iniziando con la 
riga di numero inferiore e passando attraverso ciascuna istruzione DATA 
dall'inizio alia fine. 



79 



Alcune parole su POKE 



II comando POKE consente di trattare con il VIC su un livello completa- 
mente nuovo. POKE consente di trovare una particolare locazione di 
memoria e cambiare cio che vi e memorizzato. Dato che questo 
comando opera direttamente sulla memoria del VIC. e possibile 
compiere errori inserendo (POKE) valori, nelle locazioni sbagliate 
o valori sbagliati nelle posizioni giuste! Vogliamo a questo proposito 
ripetere cio che e stato detto nel Capitolo 1 : Non c'e modo di 
danneggiare il computer battendo sulla tastiera . . . neppure con POKE. 
Ma e possibile far si che il VIC vada in qualche altro posto e metta il 
broncio, interrompendo qualsiasi contatto. Per esempio, se si e pronti 
a terminare questa lezione in ogni caso, provare a battere: 

POKE 788,0 

Si pud trovare che il solo modo in cui e possibile riguadagnare una 
comunicazionecon un computer che e stato «insultato» in questo modo 
consiste nel battere RUN/STOP e RESTORE. Se il «guasto» e serio, 
e possibile dover spegnere e riaccendere il computer. Questo non lo 
danneggia ma significa che qualsivoglia programma su cui si stia 
lavorando vada perso. Anche se questo dovesse succedere, il danno si 
limita ad un lavoro supplementare di battitura. Ma suggerisce che 
bisogna fare attenzione a cio che si inserisce (POKE). Cio sottolinea 
anche I'importanza degli accessori tipo le unita disco e le cassette di dati 
che possono memorizzare programmi nonche le stampanti che 
possono almeno dare un listato di programma che puo aiutare a 
ricostruirne uno perso. 

Si consiglia di effettuare un breve studio di POKE nell'Appendice C 
prima di mettersi a «POKE» qua e la indiscriminatamente nel VIC. 
Provare almeno gli esempi forniti nel manuale. Fare attenzione a battere 
quei lunghi numeri e controllare a fondo il lavoro prima di eseguire un 
programma. Un computer in cui e stato eseguito un POKE nel posto 
sbagliato puo offendersi e ritirarsi seccato in un angolo. 

In questo capitolo si e imparato a suonare Bach e Beethoven col VIC. 
Allora, maestro, prego! 



80 



Provare a battere 
questo programma: 

Battere questo programma esattamente come indicate e 
vedere cosa succede! 




Per interrompere i 
programm a, premere il tasto 

e premere 



82 



Buongiorno VIC. La tua missione (noi sappiamo che tu I'accetterai) e di 
eseguire miracoli ogniqualvolta noi tocchiamo pochi tasti! 

Si il VIC e pronto e ben disposto a rispondere alle varie richieste piu di 
qualsiasi altro computer mai finora costruito. Allacciare dunque le 
cinture di sicurezza e prepararsi ad un divertimento senza fine! 

e premere il tasto 



Tenere abbassato il tasto 

Battere i seguenti tasti: 

[Nil |"e] [W| e premere i I tasto 




[Yl fOl [Ul [R 



10 0ECDSHE 

ed il tasto I 
ed il tasto 




\E [G] B \6\ \2\ edil tasto 
Premere ora [r] \\j] [n] 
ed il tasto 




83 



Ed il VIC risponde: 



1 INPUT "WHAT'S YOUR NAME";A$ 

2 PRINT " HI, " A$ 



3 GOTO 2 



WHAT'S YOUR NAME? 



Notare che il 

computer aggiunge 

automaticamente 

il punto di 

domanda (?) per 

mostrare che 

e in attesa dell'inpuU 



A questo punto si batte la risposta abituale (il proprio nome) (se il nome 
fosse VIC occorrerebbe battere: 



0Bi 



E voila! II nome e com parso sullo schermo! Per rallentare lo show basta 
premere il tasto ^^S . Quando si e pronti a rinunciare alia 
la celebrita, premere il tasto 

Per immettere un altro nome battere RUN per vedere ricomparire la 
stessa richiesta. La richiesta in questo caso e: WHAT'S YOUR NAME? 
(QUALE'ILTUONOME?) 

Le richieste sono domande dirette all'operatore nel tentativo che il VIC 
fa per ottenere informazioni. II VIC ha un numero limitato di modi per 
acquisire informazioni dal mondo deM'uomo. Probabilmente il metodo 
piu utilizzato dal computer per raccogliere informazioni dalla tastiera e 
I'istruzione INPUT. Esaminiamo ora le varie fasi del programma. Ecco 
cosa abbiamo detto al VIC di fare: 

Innanzitutto visualizzare il messaggio «WHAT'S YOUR NAME» sullo 
schermo e quindi attendere I'immissione di caratteri dalla tastiera 
(INPUT). Prendere la risposta e denominarla «A$». Nell'esempio «VIC» 
diventa A$. Questo e un tipo di stenografia che usa il computer. 

Secondo, stampare la parola «HI» seguita da qualsiasi cosa venga 
battuto sulla tastiera. Nel nostro esempio abbiamo stampato HI VIC. 

Terzo, ritornare alia riga numero 2. 



84 



La seconda e la terza fase si uniscono per far si che il VIC stampi in 
continuazione il messaggio «HI» su tutto lo schermo. Se si cambiasse la 
riga 3 per farla comparire come: 

3 GOTO 1 

il messaggio HI VIC si stamperebbe sullo schermo soltanto una volta 
sola e comparirebbe di nuovo la richiesta «WHAT'S YOUR NAME». 
Questa modifica fa sembrare che il VIC abbia I'amnesia! 

Ogniqualvolta si usa I'istruzione INPUT, il programma blocca tutto in 
attesa di una risposta. E' importante notare che il VIC attende indefini- 



tamente o fino a che non viene premuto il tasto 
che viene prima. 



quello 



Nel programma abbiamo creato una richiesta amichevole. A meno che 
non si dica al VIC cosa vogliamo che il nostro messaggio di input dica, 
otterremo un semplice «?» che non ci dice molto. Cosicche cercheremo 
di costruire richieste che suggeriscono quale tipo di input e richiesto. 



Premere 



contemporaneamente. 



Battere NEW e 



1 INPUT A$ 



NEW 



READY 



1 INPUT A$ 



Quando si batte RUN lo 
schermo del VIC appare come 
segue: 

II punto di domanda da solo pone piu problemi di quanti non ne risolva! 
Proviamo in questo modo: 

1 PRINT "MAY I HAVE YOUR NAME":INPUT A$ 

2 PRINT "WHAT IS YOUR FAVORITE FOOD":INPUT B$ 

3 PRINT 

4 PRINT "THANK YOU,"A$" FOR YOURPOLITE ANSWER" 

5 PRINT "WE WILL GIVE YOU SOME | | "B$" 

AS A GESTURE OF OUR APPRECIATION" 



Dopo aver battuto RUN e II si vedra che trattare i messaggi 
con rispetto puo tradursi in una minaccia ai propri sforzi! 

85 



Presentazione delle variabili 

Molti dei programmi usati in questo manuale usano variabili per 
semplificare o rafforzare il programma. 

Le variabili sono molto utili in quanto possono essere usate per rappre- 
sentare numeri, formule, simboli grafici, parole, frasi intere. Esempi di 
nomi variabili sono: X, AB, S2, X$, AB$, S2$. II modo piu semplice per 
spiegarelapotenzadi u navariabileedi dire chequestesemplici variabili 
possono essere usate ciascuna per rappresentare fino a 255 caratteri! 

Ci sono due tipi di variabili: variabili numeriche e variabili stringa. Le 
variabili numeriche sono usate per memorizzare numeri (in effetti valori 
numerici). Le variabili stringa possono essere usate per memorizzare 
tutti i tipi di caratteri (numeri, lettere, grafici, comandi del cursore, 
controlli del colore, ecc). 




SCATOLA A 



SCATOLA A$ 

Le variabili sono come contenitori posti aM'interno del computer. Per 
dire al VIC se un contenitore e per i numeri o i valori, occorre usare un 
nome speciale. I nomi delle variabili numeriche possono essere lunghi 
uno o due caratteri e possono essere costituiti da una lettera, due lettere 
o da una lettera e da un numero. Ecco alcuni esempi di nomi di variabili 
numeriche: 



X 



AB 



S2 



C2 



AA 



ZX 



Le variabili stringa possono essere lunghe uno, due o tre caratteri 
(compreso il segno $), devono sempre iniziare con una lettera da A a Z e 
terminare con il segno del dollaro ($). Ecco alcuni esempi di variabili 
stringa: 



X$ AB$ S2$ C2$ AA$ 



ZX$ 



86 



Ecco un breve programma che mostra un modo per usare le variabili: 

10A$ = "VIC20" 

20 PRINT"HELLO,"A$ 

RUN 

II VIC visualizzera HELLO, VIC 20. Perche? Perche nella riga 10 si e detto 
al VIC che la variabile A$ equivale a «VIC 20». 
Provare ora con questo: 

10A = 2 

20B = 3 

30C = 4 

40PRINTA*B*C 

In questo esempio, A*B*C e identico a 2*3*4 in quanto sono stati memo- 
rizzati i numeri 2, 3 e 4 nelle variabili A, B e C. 

Ecco un esempio finale che usa due tipi di variabili con le istruzioni 
INPUT. L'istruzione INPUT consente alia persona che esegue il pro- 
gramma di definire che cosa rappresenta la variabile come in questo 
caso: 

10PRINT"WHAT WORD DO YOU WANT X$ TO STAND FOR": 
INPUT X$ 

20PRINT"WHAT NUMBER DO YOU WANT X TO STAND FOR": 
INPUT X 

30PRINT"NOW X$ STANDS FOR" X$ 

40PRINT"AND X STANDS FOR" X 

RUN 



87 



Scegliere una nota 



Per questo esempio INPUT, ci divertiremo un po' con il suono del VIC. 

Battere: 

NEW 

10 INPUT"HOW HIGH A NOTE";H 

20IFH=0THEN 90 

30 INPUT"HOW LONG A NOTE";L 

40 POKE 36878,15 

50 POKE 36875, H 

60FORT = 1 TO LNEXT 

70 POKE 36878,0 

80 GOTO 10 

90 END 




Dopo aver premuto | 
come segue: 



lo schermo dovrebbe apparire 



HOW HIGH A NOTE? 225 



Battere un 
numero da 
128 a 254 



HOW LONG A NOTE? 1000 



Premere il tasto 



ed ascoltare I'altezza e la durata della 



nota. Dopo ciascuna nota e possibile crearne un'altra ed avere un'idea 
di come questi «misteriosi» POKE si traducono in suoni. 

Le prime due righe di «Creazione di una nota» (10 e 20) danno la flessi- 
bilita necessaria per variare I'altezza rispettivamente nella riga 50 e 60. 
La riga 30 e la nostra «porta» per uscire quando abbiamo finito di speri- 
mentare (come battere in risposta a HOW HIGH A NOTE? - quanto e 
alta una nota? La riga 70 spegne la voce che era stata attivata prece- 
dentemente nella riga 40. 

Se si vogliono conoscere tutti i dettagli importanti per creare la musica 
con il VIC, passare al capitolo cinque. 

88 




L'istruzione GET 

Ora che si e in grado di padroneggiare l'istruzione INPUT, ci dedi- 
cheremo ad un modo piu vantaggioso per ottenere informazioni dalla 
tastiera. 

L'istruzione GET viene usata per trasferire caratteri dalla tastiera, un 
carattere alia volta. Infatti, la persona che esegue (RUN) il programma 

non deve nemmeno battere il tasto^^^^^^H ! Ecco come si 

presenta I'istruziono: 

10GETA$ 

Come creare un arresto di programma ed attendere che venga battuto 
qualcosa? Basta inserire il programma in un loop o iterazione con 
un'istruzione IF . . . THEN che controlla una risposta. 

10GETA$ 
20IFA$ = ' 



Qual e I'uso di cio? Per un'applicazione molto semplice, questo piccolo 
programma in 2 righe consente al programma di fare una pausa fino a 
che I'operatore non batte un tasto sulla tastiera. Cio aiuta a «congelare» 
lo schermo fino a che la persona non I'ha letto e desidera procedere. 

Ecco una spiegazione ampliata per l'istruzione GET: 

10GETA$ 

20IFA$ = ""THEN 10 

30 IF A$ = "A" THEN PRINT "CHICKEN SOUP" 

40 IF A$ = "B" THEN PRINT "SPAGHETTI" 

50IFA$ = "C"THEN PRINT "STEAK AND EGGS" 

60 GOTO 10 

RUN 

Una volta che questo programma e battuto ed eseguito (RUN), il VIC 
attendera che I'operatore batta qualsiasi tasto. Se il tasto e la lettera A, 
sullo schermo compaiono le parole CHICKEN SOUP. La lettera B fa 
comparire la parola SPAGHETTI e la parola C fa comparire le parole 
STEAK AND EGGS. Ora abbiamo la possibility di far battere al VIC 
parole intere con una sola operazione sui tasti! 

Ora esamineremo il programma, il piu lungo finora visto, un esempio 
pratico delle istruzioni GET e PRINT usate per creare una raccolta di 
ricette computerizzata. Non bisogna pero allarmarsi dalle dimensioni di 

89 



questo programma. Esso usa prevalentemente semplici istruzioni 
PRINT ma la lezione da imparare qui e il modo in cui la variabile A$ e 
usata per sostituire parecchie intere f rasi e come il comando GET viene 
usato. 



10 PRINT " «aaM n PLEASE PICK A CHOICE' 

20 PRINT "FROM THE MENU:" 

30 PRINT 

40 PRINT "A. ..CHICKEN SOUP" 

50 PRINT "B... SPAGHETTI" 

60 PRINT "C... STEAK & EGGS" 

200GETA$:IFA$ = ""THEN200 <■ 

210 IF A$ = "A" THEN 500 

220 IF A$ = "B"THEN 700 

230IF A$ = "C" THEN 900 

490 GOTO 200 

500 PRINT ' 

510 PRINT 

520 PRINT "TAKE 1 CHICKEN. KILL" 

530 PRINT "AND PLUCK. REMOVE" 

540 PRINT "GIBLETS. BOIL 4 QTS" 

550 PRINT "WATER IN A LARGE POT 

560 PRINT "ADD CHICKEN. BOIL" 

570 PRINT "2 HOURS, OR UNTIL" 

580 PRINT "HOUSE SMELLS GOOD." 

590 PRINT < 




MIKE'S CHICKEN SOUP" 




90 



600 PRINT "HIT ANY KEY TO GO ON" 

610 GET A$:IF A$ = "" THEN 610 

620 GOTO 10 

700 PRINT " II ftfffifl MA'S SPAGHETTI" 

710 PRINT 

720 PRINT "BROWN 1 LB. GROUND" 

730 PRINT "BEEF, WITH 1 ONION" 

740 PRINT "AND 1 GREEN PEPPER." 

750 PRINT "ADD 1 LG. CAN TOMATO" 

760 PRINT "PUREE, 6 OZ. CAN TOM." 

770 PRINT "PASTE, 6 OZ. WATER," 

780 PRINT "3 CLOVES GARLIC, SALT" 

790 PRINT "& PEPPER, RED PEPPER," 

800 PRINT "OREGANO. SIMMER 1 HR" 

810 PRINT "& SERVE WITH COOKED" 

820 PRINT "NOODLES." 

830 GOTO 590 

900 PRINT " I WM STEAK AND EGGS' 

910 PRINT 

920 PRINT "TAKE 1 COOKED STEAK" 

930 PRINT "AND COOKED EGGS." 

940 PRINT "SERVE TOGETHER WITH" 

950 PRINT "BEVERAGE." 

960 GOTO 590 



91 



Sesi e battuto il programma 
correttamente e battuto 
RUN, lo schermo dovrebbe 
comparire con la seguente 
visualizzazione: 



PLEASE PICK A CHOICE 
FROM THE MENU: 



A.. .CHICKEN SOUP 
B... SPAGHETTI 
C... STEAK & EGGS 



Ora il VIC e in attesa che venga battuto un tasto. Se si batte qualsiasi altra 
cosa diversa da A, B o C, non succede nulla (se ne occupa la riga 200). Se 
si batte A, significa che si cerca la ricetta della Chicken Soup alia Mike. 
Interessante vero? 

Cio pud essere allungato e modificato molto facilmente a secondo 
dell'uso che se ne vuole fare. Per aggiungere varie voci al menu, basta 
aggiungere un'istruzione PRINT dopo la riga 60, aggiungere una nuova 
istruzione IF dopo la riga 230 ed aggiungere la ricetta ovunque c'e 
spazio al termine. L'ultima riga della ricetta dovrebbe essere la riga 
GOTO 590 che dice alia persona che esegue (RUN) il programma di 
battere un tasto per continuare. Ci6 mantiene inoltre la ricetta sullo 
schermo fino a che non la si e completamente eseguita. 

E' possibile usare il programma appena descritto per qualcosa di 
diverso dalle ricette, naturalmente. Cosa dire di un archivio di nomi e 
indirizzi? Invece di un «menu» usare cognomi con iniziali. Invece delle 
ricette usare il nome della persona, I'indirizzo ed il numero di telefono. 
E' possibile pensare ad altri usi per programmi basati su GET e INPUT? 
Questa e la vera potenza di calcolo - la possibility cioe di adattare alle 
proprie esigenze cio che il computer pud fare. 



92 



Provare a battere 
questo programma: 



Battere questo programma esattamente come indicato e 
vedere cosa succede! 




Per interrompere il programma, premere il tasto Kg 





94 



I primi programmi BASIC 



Finora, sono stati battuti parecchi programmi senza pero comprenderne 
il funzionamento. Questo capitolo spieghera come sono composti i 
piccoli, furbi programmi e consenting di procedere ulteriormente verso 
la programmazione del proprio VIC. 



PROGRAMMA1: 
(Capitolo 2) 



proprio nome illuminato 



10 PRINT 


— 


5223 


20 FOR T 


= 1 TO 300: 


NEXT 


30 PRINT 


<tuo nome> 




40 FORT 


= 1 TO 300: 


NEXT 


50 GOTO 10 






Non sembra esserci molto su questo piccolo programma ma una volta 
che si comprende cosa sta facendo, c'e la chiave per eseguire effetti di 
animazione. La riga 10 e il comando PRINT, con il carattere che significa 
«cancellare lo schermo» aM'interno delle virgolette. Se si cercasse di 
battere la riga senza le virgolette, la riga di programma scomparirebbe 
dallo schermo prima ancora di f inire di batterla. // VIC riconosce soltanto 
una nuova riga quando si batte il tasto RETURN con il cursore su quella 
riga. 




95 



Suggerimento VIC: Virgolette 

parleremo ora un poco su quanto succede quando si batte il tasto delle 
virgolette. La prima volta che si batte il tasto delle virgolette, accade 
qualcosa di divertente. Se si batte HOME, CLR, cursore verso I'alto, 
cursore verso il basso, verso sinistra e verso destra si ottiene un carattere 
grafico ed in negative Cid succede anche sul VIC quando viene premuto 
uno qualsiasi dei tasti di controllo del colore. Come si vede, i segni di 
virgolette sono usati nei programmi di computer ed il VIC riconosce 
questi segni come un comando di programmazione. Pertanto quando si 
batte un tasto di controllo del cursore o del colore dopo una serie di 
virgolette, il VIC visualizza un codice speciale per individu are 

quell'operazione. Per esempio quando si batte "e si preme I 

si ottiene un cuore in negativo sullo schermo. Se si vede comparire 
questo comando in un programma, si a che significa «cancellare lo 
schermo». Altri simboli corrispondono ad altre operazioni. Una volta che 
si batte il tasto delle virgolette per la seconda volta qualsiasi tasto di 
controllo del cursore e di colore funzionera normalmente. 

II tasto INSERT provoca un effettosimile. Quando viene battuto questo tasto, 
ogni spazio creato f ra le righe agisce come se fosse nel modo «virgolette». 
Tutti i caratteri di controllo del cursore compariranno come se si 
trovassero all'interno delle virgolette. Inoltre, il tasto DELETE produrraun 
carattere grafico speciale in negativo in questi spazi, che avra I'effetto di 
cancellare caratteri quando il programma viene listato e di stampare 
DELETE sullo schermo quando si esegue la stampa (PRINT). 



La riga 20 del programme e detta uo'iterazione di ritardo. Si tratta in 
effetti di due istruzioni BASIC su una riga, separate I'una dall'altra dal 
due punti (:). Tutti cio che succede qui e che il video contera da 1 a 300, 
senza fare altro. Cio serve a rallentare leggermente il programma 
(provare a cancellare le righe 20 e 40 e ad eseguire - RUN - il pro- 
gramma. Esso lampeggia troppo velocemente!) 

Nella riga 30, viene battuto il nome all'interno delle virgolette (almeno si 
spera che lo si sia fatto). Cio ha fatto si che il nome venisse stampato 
sullo schermo. Non e'e altro sullo schermo in quanto la riga 10 lo aveva 
gia cancellato. 

La riga 40 e un altro ritardo per dare al nome il tempo di rimanere sullo 
schermo quanto basta poterlo leggere. 

La riga 50 fa si che il programma «salti» alia riga 10 come rigasuccessiva 
da eseguire e cancella brevemente lo schermo. 

Una volta che ii nome e comparso sullo schermo della TV, e'e un ritardo 
di un secondo dopo di che lo schermo viene cancellato. Dopo un altro 
secondo, il nome viene visualizzato di nuovo nella stessa posizione. 
Di nuovo viene cancellato e cos! via. Perche le lettere compaiono nella 
stessa posizione dello schermo, I'occhio crede che le lettere 
lampeggino. 

Provare ora a fare qualche esperimento con questo programma. 
E' possibile allungare o ridurre gli intervalli tra la visualizzazione e la 
cancellazione del nome cambiando il numero 300 nelle righe 20 e 40. 

96 



PR0GRAMMA2: Molti cuori 
(Capitolo 3) 



10FORH = 


= 1 TO 505 




20 PRINT " 


*"; 




30 NEXT 






40 FOR C = 


= 8 TO 255 STEP 17 


50 POKE 36879, C 




60FORT = 


1 TO 500: 


NEXT 


70 NEXT 






80 GOTO 40 





Questo programma crea uno schermo pieno di cuori colorati. Esso 
introduce I'uso dei segni di punteggiatura nelle istruzioni PRINT e I'uso 
di POKE per cambiare il colore dello schermo e dei margini. 

La riga 10 imposta un'iterazione che conta da 1 a 505. Si vuole cioe che 
compaiano 505 cuori sullo schermo in quanto sullo schermo ci sono 506 
spazi. Se si stampasse (PRINT) il 506-esimo carattere, lo schermo 
verrebbe costretto a scorrere verso I 'alto di una riga e ci sarebbero meno 
cuori sullo schermo di prima. 

La riga 20 stampa (PRINT) il carattere del cuore sullo schermo. II punto e 
virgola (;) dopo I'ultimo segno di virgolette ha un effetto importante. 
Come si sa, dopo una normale istruzione PRINT, il VIC esegue auto- 
maticamentedueoperazioni-spostacioeilcursoreaH'indietroairinizio 
della riga (e cioe esegue un ritorno a capo) e sposta il cursore verso il 
basso alia riga successiva (esegue cioe un'interlinea). 
II segno di punteggiatura al termine della riga cancella il ritorno a capo e 
I'interlinea in modo che la successiva cosa che viene stampata (PRINT) 
compare direttamente alia destra deM'ultima cosa stampata (PRINT). 

La riga 30 completa semplicemente I'iterazione di ritardo. Dato che il 
valore di H e 505 o meno, il programma stampera i cuori sullo schermo. 
Quando viene stampato il 505-esimo cuore, il programma continua con 
la riga successiva (riga 40). 



97 



La riga 40 crea una nuova iterazione e definisce la riga 50, che cambia i 
colori del margine e dello schermo. C e definito come una serie di 
numeri da 8 a 255, cheaumentaaincrementi di 17. Ogni voltache viene 
battuta la riga 70 (NEXT), viene aggiunto 17 al valore precedente di C e la 
somma viene usata per il nuovo valore. Cio fa si che venga scelto un 
ciclo di colori che comprende il margine nero con lo schermo nero, il 
margine bianco con lo schermo bianco, ecc. per tutti gli otto colori del 
margine. Quindi i numeri in C vanno oltre i valori di quei colori e 
scelgono 7 colori diversi per lo schermo. (Vedere Appendice I per una 
lista dei numeri dei colori). 

La riga 50 e I'istruzione che effettivamente cambia il colore. II valore 
contenuto nella variabile C e memorizzato nella posizione di memoria 
36879. Si tratta in effetti di una locazione sullo stesso chip VIC e non 
nella normale area di memoria. 

La riga 60 e un'iterazione di ritardo. Se questa riga venisse rimossa, 
i colori cambierebbero in manieracosl veloce da far venire il mal di testa. 

La riga 70 completa I'iterazione iniziata nella riga 40. Notare che la riga si 
sarebbe potuta scrivere nella forma 70 NEXT C, ma non deve esserlo. 

La riga 80 fa riprendere al programma il ciclo attraverso i vari colori. 
Esso continuera all'infinito a meno che non si prema il tasto STOP o non 
si spenga il VIC. Battendo POKE 36879, 27 dopo aver battuto STOP, si 
ripristinano i normali colori dello schermo. 



98 



PROGRAMMA 3: Esercizio con il signor VIC 
(Capitolo4) 



10 


PRINT " 


UJJJg 


20 


PRINT ' 


'SD0" 


30 


PRINT ' 


•D^D" 


40 


PRINT ' 


■0DS" 


50 


FORT = 


= 1 TO 300: NEXT 


60 


PRINT ' 


'■"; 


70 


PRINT ' 


'DDD" 


80 


PRINT ' 


' M S " 


90 


PRINT 


'DDD" 


100 


FORT: 


= 1 TO 300: NEXT 


110 


GOTO 10 



Questo programma e simile al primo eseguito, quello che presentava 
sullo un nome illuminato lampeggiante, ma in questo caso invece di 
disegnareun'immagineequindifarlalampeggiare, comefacevail primo 
programma, disegna un'immagine completa, fa una pausa, sostituisce 
I'immagine con un'altra immagine completa. Mentre la testa ed il corpo 
del signor VIC rimangono nella stessa posizione, le braccia e le gambe 
cambiano posto. Cio da I'illusione del movimento da una posizione alia 
successiva. 

Le righe 10 e 60 portano il cursore all'angolo superiore sinistro dello 
schermo, note come posizione di partenza. Ci6fasi che I'immagine del 
signor VIC venga visualizzata ogni volta nella stessa posizione sullo 
schermo. 

Lerighe20,30e40«disegneranno» ciascuntrattodella prima immagine 
del signor VIC. 

Le righe 50 e 100 sono iterazioni di ritardo e servono a mantenere 
I'immagine sullo schermo per un tempo sufficiente. 

Le righe 70, 80 e 90 disegnano la seconda immagine sullo schermo. Cio 
avviene in maniera cosi veloce da non rendere possibile osservare la 
transizione - I'occhio vede un passaggio istantaneo da un'immagine 
all'altra. 

99 



PR0GRAMMA4: 
(Capitolo5) 



Sceltadi una nota 



NEW 
10 PRINT 




FOR I = 1 TO 5 
POKE 36873+1,0 
NEXT I 




PRINT "WHICH VOICE (1-4)?" 
PRINT "IF DONE, ENTER 0" 

NPUTN 

IF N=0 THEN END <■ 

PRINT "WHICH PITCH (128-254)?"- 

INPUT P «e- 

POKE 36878, 4 

POKE 36873 + N, P 

FOR J = 1 TO 2000: 

GOTO 10 



Una volta verificato che tutte le righe siano corrette, provare a eseguire 
questo programma (battere RUN e premere RETURN). Cio consente di 
scegliere una voce ed un valore di altezza e di suonare il tono scelto per 
circa due secondi. II suono si interrompe ed il programma chiede 
un'altravoceed unaltrovaloredialtezza.il programma e la deliziadi chi 
fa esperimenti musicali. Quando si vuole interrompere il programma, 
immettere come scelta per la voce. E' possibile pensare che c'e un 
problema quando si sceglie I'altezza 254 nella voce 3 e non si ode nulla. 
In effetti non si tratta di un errore - questa nota e semplicemente troppo 
alta per le orecchie deM'uomo. (Si potrebbe pero provarla sul cane!) 



100 



PROGRAMMA 5: Conversione di temperatura 
(Capitolo6) 



10 INPUT "DEGREES FAHRENHEIT"; F 


20 PRINT F " 


DEGREES F." 


30 PRINT "IS 


"(F-32)*5/9 "DEGREES C." 


40 PRINT 




50 GOTO 10 





Qui viene introdotta I'istruzione INPUT, che consente al programma di 
interrompere cio che sta facendo e richiedere le necessarie informazioni 
all'operatore (la persona cioe che esegue - RUN - il programma). 

La riga 10 fa si che sullo schermo compaia il messaggio DEGREES 
FAHRENHEIT? (gradi Fahrenheit?). Le parole aM'interno delle virgolette 
di un'istruzipne INPUT funzionano esattamente come I'istruzione 
PRINT. In ogni caso, I'ultima parola sara sempre seguita da un carattere 
punto interrogativo (?) ed il programma attendera a questo punto 
ulteriori informazioni. 

La riga 20 stampa i valori di F, che e cio che e stato battuto (immesso). 
La riga 30 stampa il risultato del calcolo di conversione. Nella riga 40 la 
parola PRINT da sola su una riga fa si che sullo schermo compaia una 
rigavuota. 

Infine la riga 50 fa si che il programma torni all'inizio e richieda altre 
informazioni per ripartire. Verra posta di nuovo la domanda originale 
e si potranno convertire altre temperature. Al termine, tenere abbassato 
il tasto STOP e battere il tasto RESTORE. Non c'e alcun modo per dire al 
programma che si e finito. 



101 



PROGRAMMA 6: Labirinto casuale 
(Capitolo7) 



10 PRINT " 


BB 


I3J3I - 


20 PRINT CHR$(205.5 


+ RND(1)); 


30 GOTO 20 







Questo e un piccolo e semplice programma che stampa sullo schermo 
pseudo-labirinti. Come si pud immaginare, la riga importante e la 
numero 20. 

La funzione CHR$ da un carattere basato su un numero di codice da 
a 255. Ogni carattere che il VIC pud inserire sullo schermo e codif icato 
in questo modo (vedere Appendice H). Per trovare il codice di ciascun 
carattere, basta battere PRINT ASC(«X») dove X e il carattere che si 




C senzavirgolette j 



sta controllando. Quindi battere PRINT CHR$(X) dove X e il numero che 
il VIC ha fornito. Visto come funziona? 

Ora provare a battere PRINT CHR$ (205); CHR$ (206). Cio dovrebbe 
stampare i due carattere grafici posti sul lato destro sui tasti M e N. 
Questi sono i due caratteri che il programma usa per costruire i 
«labirinti». 

Aggiungendo la formula 205.5 + RND(1), il VIC sceglie un numero 
casuale tra 205.5 e 206.5. Ci sono pari probability che un numero risulti 
al disopra o al disotto di 206. La funzione CHR$, ignora qualsiasi valore 
frazionario. Pertanto per meta delle volte verra stampato il carattere con 
il codice 205 e per I'aitra meta il carattere con il codice 206. 

Se si vuole fare esperimenti con questo programma, provare ad 
aggiungere o a sottrarre un paio di decimi a 205,5. Cio da all'uno o 
all'altro carattere una maggior possibility di comparire. 



102 



Altro sui numeri casuali 

La funzione «numero casuale» e uno degli aspetti piu utili e piu grade- 
voli del BASIC, che consente di programmare tutti i tipi di giochi di 
probability 

La riga X=RND(1) fa si che il VIC scelga un numero casuale tra e 1 
esclusi, da inserire in X. Cio si traduce in un campo di possibili valori 
per X: 

0<X<1 

Quando si lavora con i numeri casuali, vale la pena di tenere presente 
che si genera un campo di numeri per vedere come i calcoli interessano 
I'intero campo. Per esempio se si volesse ottenere una serie di possibili 
valori tra e 3, si potrebbe semplicemente moltiplicare X per tre. II nuovo 
campo e: 

0<X<3 

Se occorresse scegliere un numero da 10 a 20, come sarebbe possibile 
eseguire un calcolo per cambiare il campo. Innanzitutto occorrerebbe 
aggiungere 10 al numero scelto, per cambiare il campo in 

10 < X < 11 

Moltiplicando il numero casuale per 10 prima di aggiungere il 10, il 
campo diventa: 

10<X<20 

Cosicche la formula per un numero casuale tra 10 e 20 e: 

X=RND(1)*10+ 10 

Finora abbiamo imparato come cambiare il campo dei possibili risultati 
per il numero casuale. In ogni caso il risultato della funzione conterra 
ingombranti cif re decimali che non sono desiderabili per applicazioni 
tipo lancio di dadi o la scelta di un numero da 1 a 10. La funzione usata 
per ripulire tutto questo ciarpame e INT, che elimina tutte le cifre deci- 
mali dal numero. La formula per un numero casuale da 10 a 20, con 
I'aggiunta della funzione INT diventa pertanto: X=INT(RND(1)*10 + 10). 



103 



II campo di possibili risultati e ora: 

10< = X< = 19 

Maattenzione! II limitesuperioredel campoescesoda20a19inquesto 
caso. Perche? Perche prima il campo era sempre minore di 20. La 
funzione INT toglie le cifre decimali da un numero maggiore di 19 e 
minore di 20 per dare luogo a 19. All'altra estremita della gamma, 
qualsiasi risultato tra 10 e 1 1 viene troncato a 10. Se occorresse invece 
avere un campo di numeri da 10 a 20, la formula dovrebbe diventare: 

X=INT(RND(1)*11 + 10) 

II numero casuale viene moltiplicato per espandere il campo ed 
aggiunto perspostarlo. 

La formula generale per una seriedi numeri casuali in uncerto campo e: 

X=INT(RND(1)*a) + b 

Dove a rappresenta il numero di possibili risultati e b e il numero minore 
nel campo. 



104 



Appendice A: Gli accessori VIC - una 
rapida Introduzione 

Questo e un manuale per i principianti cosicche non si dedichera 
molto tempo e spazio a parlare delle varie periferiche che si 
inseriscono nelle varie uscite nella parte posteriore del VIC. 

Ciascuna delle periferiche avra un proprio manuale di istruzioni che 
spieghera come collegarla al VIC ed usarla per fare cose 
interessanti. 

La COMMODORE ha disegnato il VIC per crescere insieme alle 
esigenze dell'utente e prevede un piano globale relativo al modo in 
cui le varie periferiche si uniscono fra di loro e col VIC. Ecco una 
mappa di tale piano. 



II Sistema di Personal Computer 
Commodore VIC 20* 



( Stampante J 



Amptiamento di 
memoria 
3K/8K/16K 



Programmi i 
innesto 



Unita 
disco 
singola 



Modula- 
tore a radio- 
frequenza o 
cavo video 



Ampliamento di 
memoria 3K 



Programmi ad 
innesto 



Uscita per Uscita per 
I'utente cassetta 



Uscita 
video 



Computer VIC 20 



Connettore 

di 
espansione 



Connettore per 
comando giochi 



Alimen- 
tatore 



1 barra di 
comando o 

1 penna 
luminosa o 

2 palette 



Cartucce di 
interfaccia 



Scheda 
principale controllo 



Programmi speciali ad innesto 



Super Expander Cartridge 



- Memoria aggiuntiva 3K (porta il VIC 
a 8K) 

- Grafici ad alta risolvenza e comandi 
tracciamento 

- Tasti di funzione preassegnati 



Programming Aid Cartridge 



La «cassetta di attrezzi» del 

programmatore 

Machines-Code Monitor 
-Accessoal linguaggio macchina 
■ Tasti di funzione 

preassegnati (comandi di 

programma) 

Tasti di funzione assegnabili 

dall'utente 



106 



Registratore a cassetta 



La prima periferica che probabilmente si acquistera sara il 
registratore a nastro COMMODORE. II registratore pud accogliere 
parecchiemigliaiadicaratteri(lettereenumeri)su una normale cassetta 
magnetica. E' possibile memorizzare programmi abbastanza lunghi su 
nastri e quindi caricarli abbastanza rapidamente, senzadoverli ribattere 
ogni volta (vedere Appendice B - Lavoro con le cassette magnetiche). 

II registratore a cassetta VIC si inserisce ad innesto nell'uscita di 
interfaccia per cassetta sul dorso del VIC con la sua spina speciale e 
non richiede qualsiasi particolare interfaccia. La COMMODORE 
fornisce una varieta di programmi di computer su nastro per 
I'impiego con il registratore a cassetta. 

Pannello di espansione multiplo 

E' possibile inserire un pannello di comando principale nel 
connettore di espansione sul dorso del VIC. Questa unita di 
controllo consente di usare piu di una cartuccia alia volta. Esso 
prevede sei uscite ed accetta cartucce di programma, ampliamenti di 
memoria e comprende un'interfaccia IEEE-488 che consente di 
usare le periferiche PET/CBM Commodore ed anche unita IEEE. 

Unita' Floppy Disk singola VIC 

L'unita disco floppy singola VIC puo memorizzare fino a 170 000 
caratteri (lettere e numeri) e memorizzare un programma molto lungo 
caricandolo o togliendolo dalla memoria del VIC in una frazione di 
secondo. Non occorre quindi aspettare come nel caso dell'unita 
nastro che il programma venga trovato, letto e caricato. Questo 
dispositivo si collega al connettore seriale del VIC. 

Cartucce di interfaccia IEEE-488 

IEEE-488 e uno standard universale scientifico che consente di 
usare le periferiche COMMODORE PET/CBM tipo unita dischi e 
stampanti, nonche strumenti ed attrezzi scientifici. 



Stampante seriale 



II VIC ha un'interfaccia seriale per le periferiche che usano 
collegamenti seriali per comunicare con il computer. Con la speciale 
stampante a matrice a punti del COMMODORE che usa questo 
collegamento seriale e possibile stampare su carta i listati di 
programma ed i risultati. 



107 



Connettore per comando giochi 

II connettore per comando giochi del VIC consente di collegare barre di 
comando, penne luminose e palette in modo da far funzionare 
facilmente gli stessi giochi delle sale specializzate senza dover usare 
la tastiera. 

Telecomunicazioni 

Si sara gia letto di programmi che consentono al personal computer 
di parlare ad altri computer e di accedere ai servizi informazioni 
specializzati che si stanno creando un poco ovunque. Nel VIC 
questa capacita e gia incorporata. 

L'uscita per I'utente del VIC comprende un'interfaccia R5232 che 
consente di ricevere o scambiare informazioni sulla linea telefonica 
usando un modem poco costoso per telecomunicazioni. 

Software 

Oltre a tutto questo hardware, il VIC presenta un assortimento di 
software interessante. 

Alcuni programmi sono memorizzati in cartucce che si inseriscono 
ad innesto nella parte posteriore del VIC e sono pronte per il 
funzionamento non appena I'apparecchio viene acceso. Alcuni 
programmi sono su nastro, altri su disco e molti sono compresi nel 
VIC Learning Series Book e nella serie di cartucce che consentono 
di imparare il calcolo ed altre materie. 

Ma questa e stata semplicemente una rapida panoramica degli 
accessori disponibili. 

TENERSI A CONTATTO CON IL 
RIVENDITORE COMMODORE PER CONOSCERE 
LE INFORMAZIONI PIU RECENTI 
RELATIVE Al NUOVI SVILUPPI! 



108 



Appendice B: 

Uso del registratore a cassetta 

II registratore a cassetta e la prima periferica che viene acquistata 
dalla maggior parte dei possessori del VIC. Si tratta di un dispositivo 
che consente di registrare i programmi per successivo impiego ed 
inoltre di memorizzare e richiamare dati. Questa Appendice sara di 
aiuto una volta che si disporra del registratore a cassetta. 

II primo comando che si usera con il registratore e SAVE. Quando 
viene immesso questo comando, il VIC risponde con il messaggio 
PRESS PLAY & RECORD ON TAPE (PREMERE PLAY E RECORD). 
Occorre cioe tenere abbassato il tasto RECORD sul registratore e 
quindi premere PLAY. Entrambi i tasti dovrebbero rimanere 
abbassati mentre il VIC sta registrando il programma (se il tasto 
RECORD non resta abbassato, controllare il dorso della cassetta per 
accertarsi che la piccola linguetta non sia stata staccata. Se e stata 
staccata, il VIC non consente di registrare su quel nastro. Questa 
linguetta deve essere usata per un nastro sul quale non si pud 
scrivere). Una volta che e abbassato il tasto PLAY, il VIC da il 
messaggio OK e fa comparire sullo schermo la parola SAVING 
(salvataggio in corso). Dopo un breve periodo, compare il messaggio 
OK e la parola READY (Pronto) e I'operazione di salvataggio (SAVE) 
e completata. E' possibile dare un nome ad un programma 
inserendolo tra virgolette dopo la parola SAVE (vedere Appendice 
C). 

Una volta che il programma e stato salvato (SAVE), e una buona idea 
controllarlo per assicurarsi che la versione sul nastro sia OK. E' 
possibile infatti che la registrazione non sia riuscita, ad esempio per 
la presenza di un difetto sul nastro. A questo scopo il VIC prevede 
un comando noto come VERIFY, che controlla il programma sul 
nastro a fronte della copia del programma esistente nella memoria 
RAM. 

Quando si batte la parola VERIFY, il VIC visualizza il messaggio 
PRESS PLAY ON TAPE (premere PLAY). Se si fa seguire la parola 
VERIFY da un nome di programma, sul nastro verra esaminato quel 
programma altrimenti verra verificato (VERIFY) il primo programma 
sul nastro. Quando si preme il tasto PLAY, il video risponde con OK 
e con la parola SEARCHING (Ricerca in corso). Quindi il VIC elenca 
qualsiasi programma con nomi diversi da quello che si sta cercando, 
esattamente per far sapere che essi sono presenti. Quando e stato 
individuato il nome del programma cercato, compare il messaggio 
FOUND e VERIFYING (Trovato e Verifica in corso). II VIC ora 
confronta il programma su nastro con quello che c'e in memoria, 
procedendo fino alia fine anche se trova un errore. 

Quando viene raggiunta la fine del programma sul nastro, viene 
visualizzato il messaggio OK e READY (OK e Pronto) se tutto e a 
posto oppure il messaggio 7VERIFY ERROR (Verificare errore) se c'e 
un problema con il programma cosi come compare sul nastro. 
Se si incontra un errore, provare ad usare un nastro vuoto diverso e 
ripetere I'operazione. 

109 



Quando si vuole caricare un programma da nastro nella memoria 
interna del VIC, usare il comando LOAD. II VIC dice PRESS PLAY ON 
TAPE ed inizia a caricare il programma. Al termine corretto 
dell'operazione, si riceve il messaggio READY. Se c'e un problema 
con il programma sul nastro, compare sullo schermo un messaggio 
?LOAD ERROR (Errore di caricamento). Se il nastro e molto 
difettoso, possono succedere cose stranissime al VIC. Potrebbero 
comparire caratteri divertenti sullo schermo o potrebbe succedere 
qualsiasi altra cosa. In caso di caricamento difettoso come questo, 
probabilmente la miglior cosa e di spegnere il VIC e riaccenderlo e 
riprovare. 

Ora veniamo ad un aspetto diverso dell'uso della cassetta di nastro e 
cioe la memorizzazione di dati (ossia variabili e risultati dei calcoli) 
sul nastro ed il loro richiamo. 

Per iniziare a memorizzare dati su nastro, la prima operazione da 
fare e di creare il file su nastro. Cio avviene usando llstruzione 
OPEN, che e seguita da tre numeri e da un nome come questo: 

OPEN 1,1,1,«HELLO» 

II primo numero che segue la parola OPEN e il numero del file per 
mezzo del quale si fara riferimento successivamente al file nel 
programma. II secondo numero e un numero di unita, che sara 1 per 
la cassetta. II terzo numero e per la lettura, 1 per la scrittura e 2 
per la scrittura con marcatore di fine nastro che segue il file. II nome 
HELLO sara inserito su nastro per identificare il file consentendo in 
questo modo I'uso sul nastro di molti file con nomi diversi. Notare 
che durante la scrittura non viene cercato uno spazio vuoto sul 
nastro e durante la lettura del nastro il VIC cerca il file con un dato 
nome. L'istruzione OPEN sopra indicata creera un file su nastro per 
la scrittura che verra chiamato HELLO e cui si fara riferimento come 
al file N. 1 da parte delle successive istruzioni nel programma. 

Per scrivere effettivamente i dati sul nastro, viene usata l'istruzione 
PRINT#. II segno # e seguito dal numero del file (nel suddetto 
esempio un 1) quindi da una virgola e quindi dall'elenco delle voci 
che vengono scritte sul nastro. Questa lista dovra essere dello stesso 
formato usato quando si stampa (PRINT) sullo schermo. Una virgola 
provoca spazi extra tra le voci il che rappresenta uno spreco di 
spazio sul nastro dato che gli spazi vuoti occupano altrettanto 
spazio dei caratteri. Normalmente su questa riga viene usato il punto 
e virgola (;) come separatore. 

Si notera scrivendo i file su nastro che la cassetta non gira in 
continuazione ma parte e si ferma ripetutamente. Cio in quanto il 
VIC sta bufferizzando i dati (ossia li scrive su una memoria di 
transito). Cio significa che i dati non vengono scritti direttamente su 
nastro ma vengono disposti in un'area speciale della memoria RAM 
detta buffer o memoria di transito, area che pud contenere fino a 
192 caratteri. Quando nel buffer viene inserito il 192-esimo carattere, 
il VIC cessa di inviare caratteri al buffer e copia I'intero buffer sul 
nastro come un blocco unico. 



110 



Quando si e terminate di scrivere i dati sul nastro, occorre chiudere 
(CLOSE) il file usando I'istruzione CLOSE. La parola CLOSE e 
seguita dal numero del file che si vuole chiudere. 

Cio e necessario a causa della presenza del buffer. Se ci fossero 
ancora caratteri nel buffer quando si e finita la scrittura, questi 
caratteri andrebbero persi. L'operazione CLOSE memorizzera tutti i 
caratteri rimanenti nel buffer ed apporra sul nastro un marcatore di 
fine file (o fine nastro). 

Per leggere i dati da nastro, occorre per prima cosa aprire (OPEN) il 
file come indicato sopra usando il numero come terzo numero che 
segue la parola OPEN. II VIC cerchera il nome del file, se specificato 
ed il nastro si interrompera una volta che I'ha trovato. Ora verranno 
usate le istruzioni INPUT# o GET# per richiamare i dati. Se il buffer 
e vuoto quando viene eseguito INPUT# o GET#, verra caricato da 
nastro il successivo buffer pieno. I dati vengono cioe letti dal buffer 
e non direttamente dal nastro. 

La differenza tra INPUT# e GET# e che INPUT# prende un'intera 
variabile scritta su nastro, numero o stringa, mentre GET# prende 
soltanto un carattere alia volta. In effetti, se si prova con GET# si 
scoprira che il carattere dopo I'ultimo di ciascun elemento di dati e 
un CHR$ (13) che sta per ritorno a capo. Questo carattere viene 
usato per separare gli elementi di dati su nastro, che e il modo per 
far sapere a INPUT# dove si trova la fine di una variabile. 

Qui ci sono tre semplici programmi per consentire di fare 
esperimenti con la lettura e la scrittura di file su nastro. II primo 
programma creera il file. II secondo deve essere immesso dopo che 
il primo e stato eseguito (RUN) ed il nastro di dati e stato riavvolto e 
dimostra I'uso di INPUT# per richiamare informazioni. II terzo 
programma usa I'istruzione GET# per richiamare i dati carattere per 
carattere e stampa non solo il carattere ma anche il suo codice 
ASCII. 



111 



B H ST0P B mt 



Programma 1: Scrittura su nastro 

10 PRINT" ^SH ^! WRITE-TO-TAPE PROGRAM" 

20 OPEN 1,1,1, "DATA FILE" 

30 PRINT'NOW TYPE DATA TO BE" 

40 PRINT'STORED OR TYPE 

50 PRINT 

60 INPUT"DATA";A$ 

70 PRINT#1,A$ 

80 IFA$<>"STOP"THEN50 

90 PRINT 
100 PRINT'CLOSING FILE" 
110 CLOSE 1 

Programma 2: Lettura del nastro usando INPUT# 

10 PRINT" II ^ READ-TAPE PROGRAM" 

20 OPEN 1,1,0,"DATA FILE" 

30 PRINT'FILE OPEN" 

40 PRINT 

50 INPUT#1,A$ 

60 PRINT A$ 

70 IF A$ = "STOP'THEN END 

80 GOTO 40 

Programma 3: Lettura del nastro usando GET# 

Le righe da 10 a 40 sono identiche al PROGRAMMA 2 

50GET#1, A$ 

60IFA$ = ""THEN END 

70 PRINT A$,ASC(A$) 

80 GOTO 50 

112 



Appendice C: il BASIC del VIC 

Questo manuale ha fornito un'introduzione al linguaggio BASIC, 
quanto basta per avere un'idea della programmazione di computer e 
di una parte del vocabolario coinvolto. Questa Appendice fornisce 
un elenco completo delle regole (SINTASSI) del linguaggio BASIC 
VIC unitamente ad una descrizione concisa di ciascuna di esse. 
Occorre naturalmente far pratica con questi comandi ricordando che 
non e possibile provocare alcun danno permanente al VIC 
semplicemente battendo programmi e che il modo migliore per 
imparare il calcolo e di eseguirlo. 

Questa Appendice e divisa in sezioni secondo i diversi tipi di 
operazioni nel BASIC. Queste comprendono: 

1. Variabili ed operatori: descrive i diversi tipi di variabili, i nomi 
variabili leciti e gli operatori logici ed aritmetici. 

2. Comandi: descrive i comandi usati per lavorare con i programmi, 
correggerli, memorizzarli e cancellarli. 

3. Istruzioni: descrive le istruzioni di programma BASIC usate nelle 
righe numerate dei programmi. 

4. Funzioni: descrive le funzioni stringa, numeriche e di stampa. 

I comandi in ciascuna sezione sono indicati alfabeticamente per 
comodita. Nella guida di riferimento del programmatore VIC e fornita 
una spiegazione piu completa dei comandi del BASIC VIC; la Guida 
viene fornita insieme al VIC. 



1. Variabili e operatori 
a. Variabili 

II VIC usa tre tipi di variabili in BASIC. Queste sono: numeriche 
normali, numeriche intere e stringa (alfanumeriche). 

Le variabili numeriche normali dette anche variabili in virgola 
mobile, possono avere qualsiasi valore da -10 38 a +10 38 , con una 
precisione massima di nove cifre. Quando un numero supera le nove 
cifre, ad esempio 10 10 o 10 -10 , il computer lo visualizza in notazione 
scientifica usando il numero normalizzato ad una cifra e otto cifre 
decimali seguite dalla lettera E e dalla potenza di dieci per la quale il 
numero e moltiplicato. Per esempio, il numero 12345678901 verra 
visualizzato nella forma 1.23456789E +11. 

Le variabili intere sono usate quando il numero sara sempre 
compreso tra +32767 e -32768 e senza parti frazionarie. 

Le variabili intere richiedono meno spazio di memoria delle variabili 
in virgola mobile ma la differenza probabilmente non sarebbe 
sostanziale a meno che usate in grandi quantita tipo in una matrice 
(vedere piu avanti). Una variabile intera potrebbe essere 
rappresentata da un numero tipo 5, 10 o -100. 

Le variabili stringa sono quelle usate per i dati alfanumerici e 
possono contenere numeri, lettere e qualsiasi altro carattere che il 
VIC pud creare. Un esempio di variabile stringa e «VIC20». 



113 



I nomi variabili possono consistere in una singola lettera, in una 
lettera seguita da un numero o in due lettere. 

Una variabile intera e specificata usando il segno di percento (%) 
dopo il nome variabile. Le variabili stringa sono seguita dal segno 
del dollaro $. 

ESEMPI: Nomi variabili numeriche: A, A5, BZ 
Nomi variabili intere: A%, A5%, BZ% 
Nomi variabili stringa: A$, A5$, BZ$ 

Le matrici sono liste di variabili con lo stesso nome che usano un 
numero extra per specificare la loro natura. Esse sono definite 
usando I'istruzione DIM e possono contenere variabili in virgola 
mobile, intere o stringa. II nome variabile stringa e seguito da una 
serie di parentesi () che racchiude il numero della variabile nella 
lista. 

ESEMPI: A(7),BZ%(11),A$(87) 

Le matrici possono avere piu di una dimensione. Una matrice 
bidimensionale pud essere pensata come costituita da file e da 
colonne, con il primo numero nella parentesi che indica la fila ed il 
secondo numero che indica la colonna. 

ESEMPI: A(7,2),BZ%(2,3,4),Z$(3,2) 

Ci sono tre nomi variabili riservati al VIC che non possono essere 
usati per uno scopo normale. Si tratta delle variabili ST, Tl e Tl$. ST 
e una variabile di stato che si riferisce alle operazioni di input/ 
output. II valore di ST cambia se c'e un problema nel caricamento di 
un programma o di dati dal nastro o dal disco. Una spiegazione piu 
dettagliata di ST si trova nel Manuale di Riferimento del 
Programmatore VIC BASIC. 

Tl e Tl$ sono variabili che si riferiscono all'orologio in tempo reale 
incorporate nel VIC. La variabile Tl e aggiornata ogni sessantesimo 
di secondo. Essa inizia a quando il VIC viene acceso e viene 
ripristinata soltanto cambiando il valore di Tl$. 

Tl$ e una stringa che e costantemente aggiornata dal sistema. I 
primi due caratteri contengono il numero delle ore, il terzo ed il 
quarto carattere sono i numeri dei minuti ed il quinto e sesto 
carattere sono i numeri dei secondi. A questa variabile puo essere 
attribuito qualsiasi valore (dato che tutti i caratteri sono numeri) e 
verra aggiornata automaticamente da quel punto. 

ESEMPIO: Tl$=«101530» predispone I'orologio a 10:15 e 
30 secondi (anti-meridiane). 

Questo orologio viene cancellato quando il VIC viene spento, e 
riparte da zero quando il VIC viene di nuovo riacceso. 



114 



b. Operatori 

Gli operatori aritmetici comprendono i segni seguenti: 

+ addizione 

- sottrazione 

* moltiplicazione 

/ divisione 

| elevamento a potenza 

Se una riga contiene piu di un operatore, c'e un ordine ben definito 
in cui le operazioni si devono sempre verificare. Se vengono usati 
insieme parecchi operatori, il computer assegna le priorita come 
segue: innanzitutto I'elevamento ad esponente, successivamente la 
moltiplicazione e la divisione ed infine I'addizione e la sottrazione. 
Se si vuole che queste operazioni si verifichino in un ordine diverso 
il VIC consente di isolare un calcolo circondandolo da parentesi. Le 
operazioni racchiuse tra parentesi avvengono prima deile altre. 
Assicurarsi che le formule abbiano lo stesso numero di parentesi di 
apertura e di chiusura altrimenti il programma da luogo ad un 
messaggio SYNTAX ERROR quando viene eseguito. 

Ci sono inoltre operatori per uguaglianze e disuguaglianze: 

= uguale a 

< minore di 

> maggiore di 

< = oppure = < minore di o uguale a 

> = oppure = > maggiore di o uguale a 
<> oppure >< diverso da 

Infine ci sono tre operatori logici: 

AND OR NOT 

Questi sono usati piu spesso per riunire formule multiple nelle 
istruzioni IF . . . THEN. 

ESEMPIO: 

IF A=B AND C=D THEN 100 richiede che A=B e C=D siano veri 

IF A=B OR C=D THEN 100 consente che A=B oppure C=D siano veri 



2. Comandi 

CONT (Continua) 

Questo comando viene usato per riprendere I'esecuzione di un 
programma che era stato interrotto usando il tasto STOP, I'istruzione 
STOP o un'istruzione END all'interno del programma. II programma 
ripartira nel punto esatto in cui si era fermato. 

CONT non funziona se sono state modificate o aggiunte righe al 
programma (o se si e semplicemente spostato il cursore ad una riga 
di programma e quindi si e battuto RETURN senza cambiare nulla) o 
se il programma si e fermato a causa di un errore oppure se si e 
provocato un errore prima di cercare di far ripartire il programma. II 
messaggio in questo caso e CAN'T CONTINUE ERROR (Errore, non 
posso continuare). 

115 



LIST 

II comando LIST consente di osservare le righe di un programma 
BASIC che sono state battute o caricate (LOAD) nella memoria del 
VIC. Quando usato da solo senza essere seguito da numeri fa 
comparire sullo schermo una lista completa del programma (che 
puo essere rallentata tenendo abbassato il tasto CTRL o interrotta 
battendo il tasto contrassegnato RUN STOP). Se si fa seguire la 
parola LIST da un numero riga, il VIC mostrera soltanto quel numero 
di riga. Se si batte LIST con due numeri separati da un trattino, il 
VIC mostrera tutte le righe tra il primo ed il secondo numero. Se si 
batte LIST seguito da un numero e da un solo trattino, il VIC 
presentera tutte le righe da quel numero fino alia fine del 
programma. E se si batte LIST, un trattino e quindi un numero, si 
otterranno tutte le righe dall'inizio fino a quel numero di riga. 
Usando queste variazioni e possibile esaminare qualsiasi parte del 
programma o portarne le righe sullo schermo per la modifica. 

ESEMPI: 

LIST Mostra I'intero programma 

LIST 10- Mostra soltanto dalla riga 10 fino al termine 

LIST 10 Mostra soltanto la riga 10 

LIST-10 Mostra la riga dall'inizio fino alia riga 10 

LIST 10-20 Mostra le righe da 10 a 20 comprese 

LOAD 

Questo e il comando da usare quando c'e un programma 
memorizzato sulla cassetta o sul disco e lo si vuole usare. Se si 
batte semplicemente LOAD e il tasto RETURN, il VIC trovera il primo 
programma sulla cassetta e lo portera in memoria per essere 
eseguito (RUN), listato (LIST) o altro. E' possibile inoltre battere la 
parola LOAD seguita da un nome di programma, il che deve essere un 
nome tra virgolette («»). II nome puo essere seguito da una virgola 
(al di fuori delle virgolette) e da un numero o variabile numerica che 
agisce come numero di dispositivo per determinare I'origine del 
programma. Se non viene indicato alcun numero, il VIC presume il 
dispositivo N. 1 che e il registratore a cassetta. 

L'altro dispositivo comunemente usato con il comando LOAD e 
I'unita disco, che e il dispositivo N. 8. 

ESEMPI: 

LOAD Legge il successivo programma su nastro 

LOAD «HELLO» Cerca nel nastro il programma denominato 
HELLO e lo carica se lo trova 

LOAD A$ Cerca un programma il cui nome e nella 

variabile denominata A$ 

LOAD «HELLO»,8 Cerca il programma denominato HELLO 
sull'unita disco 

LOAD«*»,8 Cerca il primo programma sul disco 

II comando LOAD puo essere usato all'interno di un programma 

BASIC per trovare ed eseguire (RUN) il successivo programma sul 

nastro. 

116 



NEW 

Questo comando cancella I'intero programma in memoria e cancella 
inoltre le variabili eventualmente usate. A meno che il programma 
non sia precedentemente memorizzato altrove, va perso fino a che 
non lo si batte di nuovo. Fare quindi attenzione usando questo 
comando. 

II comando NEW pud anche essere usato come un'istruzione in un 
programma BASIC. Quando il VIC raggiunge questa riga, il 
programma viene cancellato e tutto si ferma. E' utile se si vuole 
lasciare tutto pulito quando il programma e finito. 

RUN 

Quando un programma e stato battutto nella memoria o caricato 
(LOAD), il comando RUN viene usato per farlo funzionare. Se il 
comando RUN non e seguito da un numero, il computer iniziera con 
la riga di programma di numero minore. Se c'e un numero, questo 
indica il numero di riga dal quale inizia il programma. 

ESEMPI: 

RUN Inizia I'esecuzione del programma partendo dal numero 

di riga minore 

RUN 100 Inizia il programma alia riga 100 

RUN X SYNTAX ERROR! (Occorre sempre battere RUN da solo o 
con un numero di riga - non con una lettera). 

SAVE 

Questo comando memorizza su una cassetta o su disco un 
programma correntemente in memoria. Se si batte la parola SAVE e 
si preme RETURN, il VIC tentera di memorizzare il programma sulla 
cassetta. 

Esso non ha alcun modo per controllare che c'e gia un programma 
in quel punto cosicche bisogna fare attenzione con i nastri. Se si 
batte il comando SAVE seguito da un nome tra virgolette o da un 
nome variabile stringa, il VIC attribuira al programma quel nome 
cosicche potra essere facilmente individuato e richiamato in future 
II nome sara seguito da una virgola (dopo le virgolette) e da un 
numero o variabile numerica. Questo numero dice al VIC qual e il 
dispositivo sul quale memorizzare il programma. II dispositivo 
numero 1 e I'unita nastro e quello numero 8 I'unita disco. Dopo il 
numero pud esserci una virgola ed il secondo numero pud essere 
o 1. Se il secondo numero el.il VIC scegliera un marcatore END- 
OF-TAPE (fine nastro) dopo il programma. Se si cerca di caricare 
(RUN) un programma ed il VIC trova uno di questi marcatori, si 
ottiene un messaggio FILE NOT FOUND ERROR (Errore, file non 
trovato). 

ESEMPIO: 

SAVE Memorizza il programma su nastro senza un 

nome 

SAVE «HELLO» Memorizza sul nastro col nome HELLO 

SAVE A$ Memorizza sul nastro col nome della variabile A$ 

117 



SAVE «HELL0»,8 Memorizza sul disco col nome HELLO 
SAVE «HELLO»,1,1 Memorizza sul nastro col nome HELLO e fa 

seguire il programma da un marcatore di fine 

nastro (END-OF-TAPE). 

VERIFY 

Questo comando fa si che il VIC controlli il programma su nastro o 
su disco a fronte di quello esistente in memoria. Questa e la prova 
che il programma che e stato recentemente salvato (SAVE) lo e 
realmente nel caso in cui il nastro sia difettoso o qualcosa non 
funzioni. Questo comando e anche molto utile per posizionare un 
nastro in modo che il VIC scriva dopo I'ultimo programma presente 
sul nastro stesso. Tutto cio che occorre fare e di dire al VIC di 
VERIFY (verificare) il nome dell'ultimo programma sul nastro. Esso 
lo fara e dira che i programmi non corrispondono (cosa che gia si 
sapeva). Ora il nastro e nel punto in cui si vuole ed e possibile 
memorizzare il successivo programma senza timore di cancellarne 
unq vecchio. 

VERIFY seguito da nulla fa si che il VIC controlli il successivo 
programma sul nastro, indipendentemente dal suo nome, a fronte 
del programma che si trova ora in memoria. VERIFY seguito da un 
nome di programma (tra virgolette) o da una variabile stringa 
cerchera nel nastro quel programma e quindi lo controller^. VERIFY 
seguito da un nome e da una virgola e da un numero controller^ il 
programma sul dispositivo con quel numero (1 per il nastro, 8 per il 
disco). 

ESEMPIO: 

VERIFY Controlla il successivo programma sul nastro 

VERIFY «HELLO» Cerca HELLO, controlla a fronte delta memoria 

VERIFY «HELLO»,8 Cerca HELLO sul disco, quindi controlla 

3. Istruzioni 

CLOSE 

Questo comando completa e chiude qualsiasi file usato dalle 
istruzioni OPEN. II numero che segue la parola CLOSE e il numero 
del file da chiudere. 

ESEMPIO: 

CLOSE 2 Viene chiuso soltanto il file N. 2 

CLR 

Questo comando cancella qualsiasi variabile di memoria ma lascia il 
programma intatto. Viene automaticamente eseguito quando viene 
impartito un comando RUN. 



118 



CMD 

CMD invia I'output che normalmente andrebbe alio schermo (e cioe 
le istruzioni PRINT, LIST ma non POKE) su un altro dispositive 
Questo dispositivo potrebbe essere una stampante, un file di dati su 
nastro o su disco. Questo dispositivo o file deve essere per prima 
cosa aperto (OPEN). II comando CMD deve essere seguito da un 
numero o da una variabile numerica che fa riferimento al file. 

ESEMPIO: 

OPEN 1,4 Apre il dispositivo N. 4 che e la stampante 

CMD 1 Tutto I'output normale va ora alia stampante 

LIST II comando indirizza alia stampante e non alio schermo - 

anche la parola LIST che e stata battuta! 

Per riprendere il normale invio alio schermo, basta chiudere 
(CLOSE) il file. 

DATA 

Questa istruzione e seguita da un elenco di elementi da usarsi dalle 
istruzioni READ. Questi elementi possono essere numeri o parole e 
sono separate da virgole. Le parole non devono essere aH'interno di 
virgolette a meno che esse non contengano uno dei seguenti 
caratteri: SPACE (spazio), virgola (,) o due punti (:). Se ci sono due 
virgole senza nulla all'interno, il valore verra letto (READ) come zero 
se si tratta di un numero o come stringa vuota. 

ESEMPIO DI UN'ISTRUZIONE DATA: 

DATA 100,200,FRED,«HELLO, MOM»,3.14,abc123 

Dato che il programma non deve mai eseguire effettivamente 
un'istruzione DATA per leggere le informazioni, e una buona idea 
inserire le istruzioni DATA il piu vicino possibile all'ultima riga del 
programma. Cio fa si che i programmi girino piu velocemente. 

DEF FN (Definisci Funzione) 

Questo comando consente di definire un calcolo complesso come 
una funzione con un breve nome. Nel caso di una lunga formula che 
e usata parecchie volte durante il programma cio pud far risparmiare 
molto spazio. 

II nome che si attribuisce ad una funzione sara costituito dalle 
lettere FN e da qualsiasi nome variabile lecito (lungo 1 o 2 caratteri). 
Innanzitutto occorre definire la funzione usando I'istruzione DEF 
seguita dal nome attribuito alia funzione stessa. Dopo il nome e'e 
una serie di parentesi (=) con una variabile numerica (in questo 
caso X) al loro interno. Quindi e'e un segno di uguale seguito dalla 
formula che si vuole definire. E' possibile «richiamare» la formula 
sostituendo qualsiasi numero a X, usando il formato indicato nella 
riga 20 dell'esempio che segue: 



119 




ESEMPIO: 

10 DEF FNA(X) = 12*(34.75-X/.3 

20 PRINT FNA(7>^: 



DIM (Dimensionamento di una matrice) 

Prima di poter usare matrici di variabili, a meno che non abbiamo 11 
elementi o meno, il programma deve per prima cosa eseguire 
un'istruzione DIM per dimensionare quella matrice. L'istruzione DIM 
e seguita dal nome della matrice, che pud essere qualsiasi nome 
variabile lecito. Quindi, racchiuso tra parentesi, occorre inserire il 
numero (una variabile numerica) di elementi in ciascuna dimensione. 
E' possibile usare qualsiasi numero di dimensioni ma occorre tenere 
presente che I'intera lista di variabili che si crea occupa molto 
spazio ed e facile esaurire in questo caso la disponibilita di 
memoria. Per immaginare il numero di variabili create con ciascun 
DIM, basta moltiplicare il numero totale di elementi in ciascuna 
dimensione della matrice. 

ESEMPIO: 10 DIM A$(40),B7(15),CC%(4,4, 
41 elementi 

E' possibile dimensionare piu di una matrice in un'istruzione DIM 
separando le varie matrici mediante virgole. Fare attenzione a non 
permettere al programma di eseguire un'istruzione DIM per una 
matrice piu di una volta altrimenti si ha un messaggio di errore. E' 
una buona idea tenere le istruzioni DIM vicine all'inizio del 
programma. 

END 

Quando il programma incontra una riga con l'istruzione END, 
interrompe I'esecuzione come se avesse esaurito tutte le righe. E' 
possibile usare il comando CONT per far ripartire il programma. 




FOR 



TO 



STOP 



Questa istruzione funziona con l'istruzione NEXT per creare una 
sezione del programma che si ripete per un certo numero di volte. E' 
possibile fare in modo che il VIC conti fino ad un grande numero in 
modo che il programma faccia una pausa per pochi secondi oppure 
e possibile contare qualcosa. Queste sono le istruzioni piu 
comunemente usate nel BASIC. 

II formato dell'istruzione e il seguente: 

FOR (nome variabile iterazione) = (inizio del conteggio) TO (fine del 
conteggio). La variabile di iterazione e una variabile che verra 
aggiunta o sottratta durante il programma. L'inizio del conteggio e la 
fine del conteggio sono i limiti al valore della variabile di iterazione. 



120 



La logica dell'istruzione FOR e la seguente. Innanzitutto viene 
definita la variabile di iterazione all'inizio del valore di conteggio. La 
fine del valore di conteggio viene salvata per successivo riferimento 
da parte del VIC. Quando il programma raggiunge una riga con il 
comando NEXT, aggiunge uno al valore della variabile di iterazione e 
controlla se questo e piu alto del valore di fine iterazione. Se non e 
piu alto, la successiva riga eseguita e I'istruzione immediatamente 
seguente I'istruzione FOR. Se la variabile di iterazione e maggiore 
del numero di fine dell'iterazione, la successiva istruzione eseguita 
sara quella che segue I'istruzione NEXT. 

ESEMPIO: 10 FOR L = 1 TO 10 
20 PRINT L 
30 NEXT L 
40 PRINT «I'M DONE! L =»L 

Questo programma stampera sullo schermo i numeri da uno a dieci, 
seguiti dal messaggio I'M DONE! L=11 (Fatto! L=11). Visto come 
funziona? In caso contrario cercare di rileggere il paragrafo prima 
dell'esempio e ricostruire il programma una fase alia volta sulla 
carta. 

II valore di fine iterazione pud essere seguito dalla parola STEP e da 
un altro numero o variabile. In questo caso viene aggiunto ogni volta 
il valore che segue STEP invece di uno. Cio consente di contare 
all'indietro ossia a decrementare, per frazioni o in qualsiasi modo 
necessario. 

E' possibile creare iterazioni una all'interno dell'altra. II procedimento 
e noto come nidificazione. Occorre pero fare attenzione a nidificare 
le iterazioni in modo che I'iterazione che inizia per ultima sia quella 
che termina per prima. 



ESEMPIO DI ITERAZIONI NIDIFICATE 

10 FOR L = 1 TO 100 

20 FOR A = 5 TO 11 STEP~2 

30 NEXT A 

40 NEXT L 



Non corretto: 

10 FOR L = 1 TO 100 

20 FOR A = 5 TO 11 STEP 2 

30 NEXT L 

40 NEXT A 




121 



GET 

L'istruzione GET e un modo per ottenere i dati dalla tastiera un 
carattere alia volta. Quando viene eseguito GET, viene ricevuto il 
carattere che era stato battuto. Se non viene battuto un carattere si 
riceve un carattere nullo (vuoto) ed il programma continua. Non c'e 
necessita di battere il tasto RETURN ed in effetti il tasto RETURN 
pud essere ricevuto con un GET. 

II termine GET e seguito da un nome variabile, solitamente una 
variabile stringa. Se fosse usato un valore numerico e fosse battutto 
qualsiasi altro tasto diverso dal numero, il programma si 
interromperebbe con un messaggio di errore. L'istruzione GET puo 
anche essere inserita in un'iterazione, alia ricerca di un risultato 
vuoto, in attesa della battuta di un tasto. 

ESEMPIO: 

10 GET A$: IF A$ = «»THEN 10 * 




GET# 

Usato con un dispositivo o file precedentemente aperto (OPEN) per 
immettere un carattere alia volta. 

ESEMPIO: GET#1,A$ 

GOSUB 

Questa istruzione e come l'istruzione GOTO salvo che il VIC ricorda 
da dove proviene. Quando si incontra una riga con un'istruzione 
RETURN, il programma salta indietro all'istruzione che segue 
direttamente GOSUB. Cio e utile quando c'e una routine nel 
programma che si verifica parecchie volte in diverse parti del 
programma stesso. Invece di batterla ripetutamente, la si batte una 
volta e si ritorna su di essa (GOSUB) dalle diverse parti del 
programma. 20 GOSUB 800 significa «andare alia subroutine che 
inizia alia riga 800 ed eseguirla». 

GOTO o GO TO 

Quando viene raggiunta un'istruzione con il comando GOTO, la riga 
successiva da eseguire sara quella con il numero che segue la 
parola GOTO. 

IF . . . THEN 

L'istruzione IF . . . THEN consente al VIC di analizzare una situazione 
ed intraprendere due azioni possibili in relazione al risultato. Se 
I'espressione viene valutata e risulta vera, viene eseguita l'istruzione 
che segue la parola THEN. Questa puo essere un numero di riga, 
che fa si che il VIC vada (GOTO) a quella riga del programma. Puo 
anche essere qualsiasi altra istruzione o istruzioni BASIC. Se 
I'espressione e falsa, viene invece eseguita la riga successiva (e non 
la successiva istruzione sulla stessa riga). 

122 



L'espressione che viene valutata puo essere una variabile o una 
formula, nel qual caso e considerata vera se diversa da zero e falsa 
se uguale a zero. Nella maggior parte dei casi, c'e un'espressione 
che coinvolge gli operator! relazionali (=,<,>,AND,OR,NOT). Se il 
risultato risulta vero, ha un valore di -1 ed un valore di se falso. 
Vedere la parte sugli operatori relazionali per una spiegazione del 
modo in cui funzionano. 

INPUT 

L'istruzione INPUT consente al computer di trasferire dati in una 
variabile. II programma si interrompe, stampa un punto di domanda 
(?) sullo schermo ed attende che I'operatore batta la risposta e 
prema il tasto RETURN. 

La parola INPUT e seguita da un nome variabile o lista di nomi 
variabili separati da virgole. Prima della lista di variabili da immettere 
puo esserci un messaggio all'interno delle virgolette. Se questo 
messaggio (detto richiesta) e presente, deve esserci un punto e 
virgola (;) dopo le ultime virgolette della richiesta. Quando deve 
essere immessa (INPUT) piu di una variabile, le variabili devono 
essere separate da virgole quando vengono battute. 

ESEMPIO: 10 INPUT«PLEASE TYPE A#»;A 
20 INPUT«AND YOUR NAME»;A$ 
30 INPUT B$ 

40 PRINT«BET YOUR DIDN'T KNOW WHAT I 
WANTED!» 



INPUT# 

Questa funziona come INPUT, ma prende i dati da un file o 
dispositivo precedentemente aperti (OPEN). 

LET 

La parola LET difficilmente e usata nei programmi dato che e 
facoltativa ma l'istruzione che la contiene e il cuore dei programmi 
BASIC. II nome variabile che deve acquisire il risultato di un calcolo 
si trova sul lato sinistro del segno di uguale ed il numero o formula 
sul lato destro. 

ESEMPIO: 10LETA=5 
20 B=6 
30 C=A*B+3 
40 D$=«HELLO» 



123 



NEXT 

L'istruzione NEXT e sempre usata unitamente all'istruzione FOR. 
Quando il programma arriva ad un'istruzione NEXT, ritorna indietro 
all'istruzione FOR e controlla I'iterazione. (Vedere per ulteriori 
dettagli l'istruzione FOR). Se I'iterazione e terminata, I'esecuzione 
procede con l'istruzione che segue NEXT. La parola NEXT pud 
essere seguita da un nome variabile o da una lista di nomi variabili, 
separati da virgole. Se non sono elencati nomi, I'ultima iterazione 
iniziata a quella che viene completata. Se vengono indicate variabili, 
sono completate nell'ordine da sinistra a destra. 

ESEMPIO: 10 FOR L=1 TO 10:NEXT 
20 FOR L=1 TO 10:NEXT L 
30 FOR L=1 TO 10:FOR M = 1 TO 10:NEXT M,L 

ON 

Questo comando pud introdurre i comandi GOTO e GOSUB in 
versioni speciali dell'istruzione IF. La parola ON e seguita da una 
formula, che da per risultato un numero. La parola GOTO o GOSUB 
e seguita da una lista di numeri separati da virgole. Se il risultato del 
calcolo e 1, viene eseguita la prima riga nella lista. Se il risultato e 2, 
viene eseguita la seconda riga e cosi via. Se il risultato e 0, negativo 
o maggiore dei numeri di riga, la successiva istruzione eseguita sara 
quella che segue le istruzioni ON. 

ESEMPIO: 10 INPUT X 

20 ON X GOTO 10,50,50,50 

30 PRINT«NOPE!» 

40 GOTO 10 

50 PRINT«YUP!» 

60 ON X GOTO 10,30,30 

OPEN 

L'istruzione OPEN consente al VIC di accedere ai dispositivi, ad 
esempio il registratore a cassetta e I'unita disco per i dati, una 
stampante o addirittura lo schermo del VIC. La parola OPEN e 
seguita da un numero che e quello al quale faranno riferimento tutte 
le altre istruzioni BASIC. Questo numero va da 1 a 255. Dopo il 
primo c'e subito il secondo numero, separato da una virgola. Questo 
e il numero del dispositive per lo schermo del VIC, 1 per il 
registratore a cassetta, 4 per la stampante, 8 per il disco. E' buona 
idea usare lo stesso numero di riferimento come numero del 
dispositivo il che facilita I'identificazione. Dopo il secondo numero 
puo essere aggiunto un terzo numero, sempre separato da una 
virgola, che e I'indirizzo secondario. Nel caso della cassetta, questo 
puo essere per la lettura, 1 per la scrittura e 2 per la scrittura con 
marcatore di fine nastro al termine. Nel caso del disco, il numero si 
riferisce al numero del buffer o del canale. Nella stampante 
I'indirizzo secondario si trasforma in diversi tipi di comandi. Vedere 
il Manuale di Riferimento del Programmatore VIC per maggiori 

124 



chiarimenti. Puo esserci anche una stringa che segue il terzo 
numero, che potrebbe rappresentare un comando all'unita disco o il 
nome del file sul nastro. 

ESEMPIO: 

10 OPEN 1,0 Apre (OPEN) lo schermo come un dispositivo 

20 OPEN 2,1, 0,«D» Apre (OPEN) la cassetta per la lettura; il file da 
cercare e denominato D 

30 OPEN 3,4 Per usare la stampante 

40 OPEN 4,8,15 Apre (OPEN) il canale dei dati sul disco 

Vedere anche le istruzioni CLOSE, CMD, GET#, INPUT# e PRINT#, 
variabili di sistema ST ed Appendice B. 

POKE 

11 comando POKE e sempre seguito da due numeri o formule. II 
primo numero e una locazione all'interno della memoria del VIC. 
Potrebbero esserci locazioni numerate da a oltre 65.000. Alcune di 
queste, come quelle descritte nei capitoli sul suono e sui colori, 
possono essere usate facilmente nei programmi. Altre, per contro, 
sono usate dal VIC per creare dei programmi e cosi via. La 
sperimentazione con I'istruzione POKE probabilmente dara luogo ad 
effetti interessanti. Se succede qualcosa e non e possibile 
interrompere, basta spegnere il VIC e riaccenderlo o tenere 
abbassato il tasto RUN/STOP e premere RESTORE. 

II secondo numero e un valore da a 255 che verra inserito nella 
locazione di memoria, sostituendo qualsiasi valore inserito 
precedentemente. 

ESEMPIO: 10 POKE 36879,8 

20 POKE 9*16| 3+15,27 

PRINT 

L'istruzione PRINT e la prima che la tutti imparano a conoscere e ad 
usare ma occorre conoscerne le numerose sottigliezze. La parola 
PRINT puo essere seguita da: 

Parole tra le virgolette 

Nomi variabili 

Funzioni 

Segni di punteggiatura 

Le parole all'interno delle virgolette sono spesso dette costanti in 
quanto sono stampate letteralmente come vengono battute. I nomi 
variabili al di fuori delle virgolette compariranno col valore che 
contengono. Anche le funzioni avranno i rispettivi valori stampati. I 
segni di punteggiatura sono usati per aiutare a formattare 
ordinatamente i dati sullo schermo. La virgola e usata per dividere lo 
schermo in due colonne, mentre il punto e virgola non lascia alcun 
spazio. Uno o I'altro segno di punteggiatura puo essere usato come 
ultimo simbolo nell'istruzione. Cio fa si che la successiva cosa 



125 



stampata (PRINT) risulti come se fosse la continuazione della stessa 
istruzione PRINT. 

ESEMPIO: 10 PRINT «HELLO» 

20 PRINT «HELLO,»A$ 

30 PRINT A+B; 

50 PRINT J; 

60 PRINT A,B,C,D 
Vedere anche le funzioni POS(), SPC(), TAB(). 

PRINT# 

Ci sono alcune differenze tra questa istruzione e I'istruzione PRINT. 
Innanzitutto la parola PRINT# e seguita da un numero che si 
riferisce al dispositivo o file di dati precedentemente aperto (OPEN). 
II numero e seguito da una virgola e da una lista di cose da 
stampare (PRINT). La virgola ed il punto e virgola hanno lo stesso 
effetto dell'aggiunta di spazi come del resto fanno nell'istruzione 
PRINT, ma alcuni dispositivi possono non funzionare con TAB e 
SPC. 

ESEMPIO: 100 PRINT#1, «HELLO THERE!»;A$,B$ 

READ 

Questa istruzione viene usata per inserire nelle variabili informazioni 
dalle istruzioni DATA, dove possono essere usate. Si deve fare 
attenzione a non leggere stringhe dove I'istruzione READ chiede un 
numero, per evitare la comparsa del messaggio TYPE MISMATCH 
ERROR. 

REM (Nota) 

REM non e altro che un commento a chiunque stia leggendo una 
lista (LIST) del programma. Pud spiegare una sezione del 
programma, fornire informazioni sull'autore, ecc. Le istruzioni REM 
non interessano in alcun modo il funzionamento del programma, 
solo lo prolungano. La parola ROM pud essere seguita da qualsiasi 
testo, quantunque I'uso di caratteri grafici dia risultati strani (vedere 
per ulteriori dettagli la Guida di Riferimento del Programmatore VIC). 

RESTORE 

Eseguita in un programma, il puntatore al quale I'elemento 
nell'istruzione DATA verra letto successivamente e ripristinato al 
primo elemento della lista. Cio consente di rileggere le informazioni. 
La parola RESTORE sta da sola sulla riga. 

RETURN 

Questa istruzione e sempre usata unitamente all'istruzione GOSUB. 
Quando il programma incontra un'istruzione RETURN, si porta 
all'istruzione che segue immediatamente GOSUB. Se non era stato 
emesso precedentemente alcun GOSUB, c'e un messaggio RETURN 
WITHOUT GOSUB ERROR (Errore RETURN senza GOSUB). Nulla 
segue la parola RETURN. 

126 



STOP 

Questa istruzione interrompe il programma. Compare un messaggio, 
BREAK ERROR IN LINE xxxx (Errore di interruzione alia riga xxxx), 
dove xxxx e il numero di riga contenente il comando STOP. II 
programma pud essere fatto ripartire usando il comando CONT. 
L'istruzione STOP e usata per la correzione degli errori di un 
programma. 



SYS 

La parola SYS e seguita da un numero decimale o da una variabile 
numerica nel campo da a 65535. II programma a questo punto 
inizia I'esecuzione del programma in linguaggio macchina iniziando 
da quella locazione di memoria. E' simile alia funzione USR, ma non 
consente di passare parametri. 

WAIT 

L'istruzione WAIT e usata per interrompere il programma fino a che i 
contenuti di una locazione di memoria non cambiano in un modo 
specifico. La parola WAIT e seguito da un numero, che e I'indirizzo 
di memoria che viene controllato. Vengono quindi una virgola ed un 
altro numero. Possono esserci anche un'altra virgola ed un terzo 
numero. Questi ultimi due numeri devono essere nel campo da a 
255. 

I contenuti della locazione di memoria sono per prima cosa 
sottoposti ad un'operazione di OR-esclusivo con il terzo numero, se 
presente e quindi logicamente sottoposti ad un'intersezione logica 
(AND) con il secondo numero. Se il risultato e zero, il programma 
ritorna a quella locazione di memoria e controlla di nuovo. Quando il 
risultato e diverso da zero, il programma continua con la successiva 
istruzione. 



127 



4. Funzioni 

a. Numeriche 

ABS(X) (valore assoluto) 

II valore assoluto da il valore del numero, senza il segno (- o +). II 
risultato e sempre positive 

ATN(X) (arcotangente) 

Da I'angolo, misurato in radianti, la cui tangente e X. 

COS(X) (coseno) 

Da il valore del coseno di X, dove X e I'angolo misurato in radianti. 

EXP(X) 

Da il valore della costante matematica e (2.71827183) elevata alia 
potenza di X. 

FNXX(X) 

Da il valore della funzione XX definita dall'utente che apre in 
un'istruzione DEF FNXX. 

INT(X) (intero) 

Da il valore troncato di X e cioe con tutte le cifre decimali alia destra 
del punto decimale rimosse. II risultato sara sempre minore di o 
uguale a X. Pertanto qualsiasi numero negativo con cifre decimali 
diventa I'intero minore del suo valore corrente. 
Se la funzione INT deve essere usata per I'arrotondamento per 
eccesso o per difetto, la forma e INT (X + .5). 

ESEMPIO: 

X = INT(X*100 + .5)/100 Arrotonda al centesimo piu vicino 

LOG(X) (logaritmo) 

Questa funzione da il logaritmo naturale di X. II logaritmo naturale e 
il logaritmo in base e (vedere EXP(X). Per convertire nel logaritmo in 
base 10, basta semplicemente dividere per LOG(10). 

PEEK(X) 

Questa funzione e usata per trovare i contenuti della locazione di 
memoria X nel campo da a 65535 ottenendo un risultato compreso 
tra e 255. E' spesso usata unitamente all'istruzione POKE. 

128 



RND(X) (numero casuale) 

Questa funzione da un numero casuale (o pseudo casuale) 
compreso tra e 1. E' utile nei giochi per simulare il lancio di dadi 
ed altri elementi di probability ed e anche usata in alcune 
applicazioni statistiche. II primo numero casuale deve essere 
generato dalla formula RND(-TI), per partire ogni volta con un 
numero diverso. Dopo di cio, il numero in X dovrebbe essere un 1 o 
qualsiasi numero positive SeXe zero, il risultato sara lo stesso 
numero casuale precedentemente uscito. Un valore negativo di X 
risemina il generatore. L'uso dello stesso numero negativo per X da 
luogo alia stessa sequenza di numeri «casuali». 

Per simulare il lancio di un dado, usare la formula INT(RND(1)*6+1). 
Per prima cosa il numero casuale da a 1 e moltiplicato per 6 che 
espande il campo da 0-6 (in effetti maggiore di zero e minore di sei). 
Quindi viene aggiunto 1, in modo che il campo risulti di 1 inferiore a 
7. La funzione INT toglie tutte le cifre decimali lasciando come 
risultato una cifra da 1 a 6. 

Per simulare 2 dadi, sommare due dei numeri ottenuti dalla suddetta 
formula. 

ESEMPIO: 

100 X = INT(RND(1)*6)+INT(RND(1)*6)+2Simula il lancio di due dadi 
100 X = INT(RND(1)*1000)+1 Numero da 1 a 1000 

100 X + INT(RND(1)*150)+100 Numero da 100 a 249 



SGN(X) (segno) 

Questa funzione da il segno, positive negativo o zero di X. II 
risultato sara +1 se positivo, se zero e -1 se negativo. 



SIN(X) (seno) 

Questa e la funzione trigonometrica seno. II risultato sara il seno di 
X, dove X e un angolo in radianti. 



SQR(X) (radice quadrata) 

Questa funzione dara la radice quadrata di X dove X e un numero 
positivo o 0. Se X e negativo, si ottiene un messaggio ILLEGAL 
QUANTITY ERROR (Errore quantita illecita). 



TAN(X) (tangente) 

II risultato sara la tangente di X, dove X e un angolo in radianti. 



129 



USR(X) 

Quando viene usata questa funzione, il programma salta ad un 
programma in linguaggio macchina il cui punto di partenza e 
contenuto nelle locazioni di memoria 1 e 2. II parametro X viene 
passato al programma in linguaggio macchina che ritorna un altro 
numero al programma BASIC. Vedere per ulteriori dettagli su questo 
argomento e sulla programmazione in linguaggio macchina il 
Manuale di Riferimento del Programmatore VIC. 



b. Funzioni strings 

ASC(X$) 

Questa funzione da il codice ASCII del primo carattere di X$. 

CHR$(X) 

Questa e I'opposto di ASC e da un carattere stringa il cui codice 
ASCII e X. 

LEFT$(X$,X) 

Cio da una stringa contenente i caratteri X piu a sinistra di X$. 

LEN(X$) 

Da il numero di caratteri (compresi gli spazi ed altri simboli) nella 
stringa X$. 

MID$(X$,S,X) 

Questa funzione dara una stringa contenente X caratteri iniziando 
dall'S-esimo carattere in X$. 

RIGHT$(X$,X) 

Questa funzione dara i caratteri X piu a destra in X$. 

STR$(X) 

Questa funzione conterra una stringa che e identica alia versione 
stampata (PRINT) di X$. 



130 



VAL(X$) 

Questa funzione converte la stringa X$ in un numero ed e 
essenzialmente I'operazione inversa di STR$. La stringa viene 
esaminata dal carattere piu a sinistra fino a quello piu a destra alia 
ricerca di quanti sono i caratteri in formato numerico riconoscibili. 
Se il VIC trova caratteri illeciti, viene convertita soltanto la porzione 
della stringa fino a quel punto. 

ESEMPIO: 10 X = VAL(«123.456) X = 123.456 

10 X = VAL(«12A13B») X = 12 

10 X = VAL(«RIU017*») X = 

10 X = VAL(«-1.23.23.23») X = -1.23 



c. Altre Funzioni 
FRE(X) 

Questa funzione da il numero di byte inutilizzati disponibili in 
memoria, indipendentemente dal valore di X. 



POS(X) 

Questa funzione da il numero della colonna (0-21) al quale iniziera la 
successiva istruzione PRINT sullo schermo. X pud avere qualsiasi 
valore e non e usato. 



SPC(X) 

Questa funzione e usata nell'istruzione PRINT per saltare X spazi in 
avanti. 



TAB(X) 

Questa funzione e usata nell'istruzione PRINT. La successiva voce 
da stampare sara nella colonna numero X. 



131 



Appendice D: 

Abbreviazioni per le parole chiave BASIC 

Come metodo per risparmiare tempo nel battere programmi e 
comandi, il BASIC VIC consente all'utente di abbreviare la maggior 
parte delle parole chiave. L'abbreviazione per la parola PRINT e un 
punto di domanda. L'abbreviazione per le altre parole sono ottenute 
battendo la seconda delle prime due lettere della parola chiave tenendo 
premuto contemporaneamente il tasto SHIFT. Se in una riga di pro- 
gramma sono usate abbreviazioni, la parola chiave le listera (LIST) nella 
forma piu lunga. Notare che alcune delle parole chiave quando 
abbreviate comprendono la prima parentesi, altre no. 



132 



Comando 




Abbrev. 


Come appare 


Comando 


Abbrev. 


Come appare 




A 




su 


schermo 






su schermo 


AND 


1 N 


A 





PRINT# 


P || R 


p Q 


NOT 


N 


1 


N 


□ 


READ 


R II E 


n B 


CLOSE 


|| 


CL 


□ 


RESTORE 


RE | | S 


RE* 


CLR 


c 


SA L 


C 


□ 


RETURN 


RE I 1 T 


ReD 


CMD 


c 


| M 


C 


s 


RUN 


R I U 


« 


CONT 


c 


1 


C 


□ 


SAVE 


S II A 


» ♦ 


DATA 


D 


1 A 


D 


4 


STEP 


ST IB E 


st B 


DEF 


D 


^E 1 E 


D 


B 


STOP 


S Bfl T 


3 


DIM 


D 


■ | 


D 


^ 


SYS 


S II Y 


s a 


END 


E 


1 N 


E 





THEN 


T 1 H 


t a 


FOR 


F 


9m 


F 


□ 


VERIFY 


V 1 E 


v B 


GET 


G 


9J E 


G 


B 


WAIT 


W II A 


w 4» 


GOSUB 


GO^E 1 S 


GC 


>V 


ABS 


A II B 


a m 


GOTO 


G 


1 


G 


B 


ASC 


A II S 


A V 


INPUT* 


1 


1 N 


1 





ATN 


A II T 


A B 


LET 


L 


1 E 


L 


B 


CHR$ 


c K 1 H 


c a 


LIST 


L 


)E 9J i 


L 


H 


EXP 


E ^E 1 * 


E ♦ 


LOAD 


L 


1 


L 


D 


FRE 


F 1 R 


■= Q 


NEXT 


N 


1 E 


N 


B 


LEFTS 


LE K 1 F 


-B 


OPEN 





H 1 p 





B 


MIDS 


M II 1 


m H 


POKE 


P 


1 


P 


D 


PEEK 


P HI E 


p B 


PRINT 


? 




? 




RIGHTS 


R El 1 


« H 


RND 


R 


H N 


R 


' 


STRS 


ST II R 


stQ 


SGN 


S 


1 G 


S 


B 


TAB( 


T II A 


T ♦ 


SIN 


S 


H i 


S 


a 


USR 


U El s 


« V 


SPC( 


s 


1 P 


S 


□ 


VAL 


V 19 A 


v ♦ 


SQR 


S 


1 Q 


S 


• 









133 



Appendice E: 

Combinazioni di colori dello 
schermo e del margine 

E' possibile cambiare i colori dello schermo e del margine del VIC in 
qualsiasi momento, all'interno o all'esterno di un programma, 
battendo 

POKE 36879.X 

dove X e uno dei numeri indicati sulla tabella che segue. POKE 
36879,27 riporta lo schermo alia normale combinazione dei colori, 
che e un margine blu verde e lo schermo bianco. 



Provare a battere POKE 36879,8. Quindi battere 



r 



per avere 



lettere bianche su uno schermo totalmente nero! Provare qualche 
altra combinazione. Questo comande POKE e un modo semplice e 
rapido per cambiare i colori dello schermo in un programma. 



Margine 





BLK 


WHT 


RED 


CYAN 


PUR 


GRN 


BLU 


YEL 


SCHERMO 


NERO BIANCO ROSSO BLU- POR- 
VERDE PORA 


VERDE 


BLU 


GIALL 


NERO 


8 


9 


10 


11 


12 


13 


14 


15 


BIANCO 


24 


25 


26 


27 


28 


29 


30 


31 


ROSSO 


40 


41 


42 


43 


44 


45 


46 


47 


BLU-VERDE 


56 


57 


58 


59 


60 


61 


62 


63 


PORPORA 


72 


73 


74 


75 


76 


77 


78 


79 


VERDE 


88 


89 


90 


91 


92 


93 


94 


95 


BLU 


104 


105 


106 


107 


108 


109 


110 


111 


GIALLO 


120 


121 


122 


123 


124 


125 


126 


127 


ARANCIO 


136 


137 


138 


139 


140 


141 


142 


143 


ARANCIOCHI. 


152 


153 


154 


155 


156 


157 


158 


159 


ROSA 


168 


169 


170 


171 


172 


173 


174 


175 


BLU-VERDE CHI 


.184 


185 


186 


187 


188 


189 


190 


191 


PORPORACHI. 


200 


201 


202 


203 


204 


205 


206 


207 


VERDECHIARO 


216 


217 


218 


219 


220 


221 


222 


223 


AZZURRO 


232 


233 


234 


235 


236 


237 


238 


239 


GIALLOCHI. 


248 


249 


250 


251 


252 


253 


254 


255 



134 



Appendice F: Tabella delle note musicali 



Nota 
approssimat. 


Valore 


Nota 
approssimat. 


Valore 


C 


135 


G 


215 


c# 


143 


A b 


217 


D 


147 


A 


219 


E b 


151 


B 


221 


E 


159 


H 


223 


F 


163 


C 


225 


F# 


167 


C# 


227 


G 


175 


D 


228 


A b 


179 


E b 


229 


A 


183 


E 


231 


B 


187 


F 


232 


H 


191 


F# 


233 


C 


195 


G 


235 


c# 


199 


A b 


236 


D 


201 


A 


237 


E b 


203 


B 


238 


E 


207 


H 


239 


F 


209 


C 


240 


F# 


212 


C# 


241 



Nota: Corrispondenza delle note in notazione anglosassone e 
italiana: C = Do E = Mi G = Sol B = Si 

D = Re F = Fa A = La 



Comandi altoparlante 



Dove X pud essere Funzione 



POKE 36878,X 



Da a 15 



Regola volume 



POKE 36874.X 



Da 128 a 255 



Suona un tono 



POKE 36875,X 



Da 128 a 255 



Suona un tono 



POKE 36876.X 



Da 128 a 255 



Suona un tono 



POKE 36877.X 



Da 128 a 255 



Suona «rumore» 



Appendice G: 

20 effetti sonori per il VIC-20 

Ecco alcune semplici routines da usare come guida per creare suoni 
per ravvivare i programmi. E' possibile batterle nel VIC-20 sia 
isolatamente che aM'interno di altri programmi. Naturalmente questi 
non sono tutti i possibili suoni che il VIC-20 puo eseguire percui c'e la 
possibility di mettere alia prova la propria creativita. 

Gli effetti sonori qui elencati fanno si che il programma faccia una 
pausa necessaria per permetteme il completamento. E' possibile 
inserire questi effetti in un programma in modo che non interrompa 
qualsivoglia animazione possa essere in corso ma questo argomento 
e discusso in dettaglio nel Manuale di Riferimento del Programmatore 
del VIC-20. 

135 



Ricordarsi di usare il numero di riga quando si battono queste 
routines nel computer. 1 numeri non sono indicati qui in ordine per 
evitare confusione quando li si immette nei programmi. 



#1: SCALE 

POKE 36878,15 

FOR L = 250 TO 200 STEP - 2 

POKE 36876, L 

FOR M = 1 TO 100 

NEXTM 

NEXTL 

FOR L = 205 TO 250 STEP 2 

POKE 36876,L 

FORM = 1 TO 100 

NEXTM 

NEXTL 

POKE 36876,0 

POKE 36878,0 

#2: COMPUTERMANIA 

POKE 36878,15 

FOR L=1 TO 100 

POKE 36876,INT(RND(1)*128) + 128 

FOR M = 1 TO 10 

NEXTM 

NEXTL 

POKE 36876,0 

POKE 36878,0 

#3: ESPLOSIONE 

POKE 36877,220 

FOR L = 15 TOO STEP -1 

POKE 36878, L 

FOR M = 1 TO 300 

NEXTM 

NEXTL 

POKE 36877,0 

POKE 36878,0 

#4: CADUTA DI BOMBE 

POKE 36878,10 

FOR L = 230 TO 128 STEP - 1 

POKE 36876, L 

FOR M = 1 TO 20 

NEXTM 

NEXTL 

POKE 36876,0 

POKE 36877,200 

FOR L = 15 TOO STEP -.05 

POKE 36878, L 

NEXTL 

POKE 36877,0 



#5: ALLARME ROSSO 

POKE 36878,15 

FOR L = 1 TO 10 

FOR M = 180 TO 235 STEP 2 

POKE 36876, M 

FORN = 1 TO 10 

NEXTN 

NEXTM 

POKE 36876,0 

FORM = 1 TO 100 

NEXTM 

NEXTL 

POKE 36878,0 

#6: RAGGIO LASER 

POKE 36878,15 

FOR L = 1 TO 30 

FOR M = 250 TO 240 STEP - 

POKE 36876, M 

NEXTM 

FOR M = 240 TO 250 

POKE 36876,M 

NEXTM 

POKE 36876,0 

NEXTL 

POKE 36878,0 

#7: SIRENA BITONALE 

POKE 36878,15 
FOR L = 1 TO 10 
POKE 36875,200 
FOR M = 1 TO 500 
NEXTM 
POKE 36875,0 
POKE 36876,200 
FOR M = 1 TO 500 
NEXTM 
POKE 36876,0 
NEXTL 
POKE 36878,0 



136 



#8: SEGNALE Dl OCCUPATO #12: ONDE DELLOCEANO 



POKE 36878,15 
FORL=1 TO 15 
POKE 36876,160 
FOR M = 1 TO 400 
NEXTM 
POKE 36876,0 
FOR M = 1 TO 400 
NEXTM 
NEXTL 
POKE 36878,0 

#9: SUONO DEL TELEFONO 

POKE 36878,15 

FORL = 1 TO 5 

FOR M = 1 TO 50 

POKE 36876,220 

FOR N = 1 TO 5 

NEXTN 

POKE 36876,0 

NEXTM 

FOR M = 1 TO 3000 

NEXTM 

NEXTL 

POKE 36878,0 

#10: PIGOLIO Dl UCCELLI 



POKE 36877,180 

FORL = 1 TO 10 

D = INT(RND(1)*5)*50 + 50 

FORM = 3 TO 15 

POKE 36878.M 

FOR N = 1 TO D 

NEXTN 

NEXTM 

FOR M = 15 TO 3 STEP -1 

POKE 36878.M 

FOR N = 1 TO D 

NEXTN 

NEXTM 

NEXTL 

POKE 36878,0 

POKE 36877,0 

#13: UFO CHE SCOMPARE 

POKE 36878,15 
FOR L= 130 TO 254 
POKE 36876,L 
FOR M = 1 TO 40 
NEXTM 
NEXTL 
POKE 36878,0 
POKE 36876,0 



POKE 36878,15 

FOR L = 1 TO 20 

FOR M = 254 TO 240 + INT (RND(1)*10) STEP - 1 

POKE 36876.M 

NEXTM 

POKE 36876,0 

FOR M = 0TO INT(RND(1)*100) + 120 

NEXTM 

NEXTL 



#11: VENTO 

POKE 36878,15 
POKE 36874,170 
POKE 36877,240 
FORL=1 TO 2000 
NEXTL 
POKE 36874,0 
POKE 36877,0 
POKE 36878,0 



#14: ATTERRAGGIO Dl UN UFO 

POKE 36878,15 

FOR L = 1 TO 20 

FOR M = 220-L TO 160-L STEP - 4 

POKE 36876,M 

NEXTM 

FOR M = 160-L TO 220-L STEP 4 

POKE 36876,M 

NEXTM 

NEXTL 

POKE 36878,0 

POKE 36876,0 



137 



#15: UFO CHE SPARA 

POKE 36878,15 

FORL=1 TO 15 

FOR M = 200 TO 220 + L* 2 

POKE 36876.M 

NEXTM 

NEXTL 

POKE 36878,0 

POKE 36876,0 

#16: ULULO DEL LUPO 

POKE 36878,15 

FOR L= 148 TO 220 STEP .7 

POKE 36876.L 

NEXTL 

FOR L = 128 TO 200 

POKE 36876.L 

NEXTL 

FOR L = 200 TO 128 STEP - 1 

POKE 36876, L 

NEXTL 

POKE 36878,0 

POKE 36876,0 

#17: RUMORE Dl PIEDI 

POKE 36878,15 
FORL=1 TO 10 
POKE 36874,200 
FOR M = 1 TO 10 
NEXTM 
POKE 36874,0 
FOR M = 1 TO 100 
NEXTM 
NEXTL 
POKE 36878,0 



#18: TICK-TOCK 

POKE 36878,15 

FOR L = 1 TO 10 

POKE 36875,200 

FOR M = 1 TO 10 

NEXTM 

POKE 36875,0 

FOR M = 1 TO 300 

NEXTM 

POKE 36874,200 

FORM = 1 TO 10 

NEXTM 

POKE 36874,0 

FOR M = 1 TO 300 

NEXTM 

NEXTL 

POKE 36878,0 

#19: APERTURA Dl UNA PORTA 

POKE 36878,15 

B = 

FORL= 128 TO 255 STEP 11 

POKE 36874.L 

FORM = 1 TO 10 

NEXTM 

B = B + 1 

IF B = 3 THEN B = 0: POKE 36874,0 

NEXTL 

POKE 36874,0 

POKE 36878,0 

#20: BLIP 

POKE 36878,15 
POKE 36876,220 
FORL=1 TO 5 
NEXTL 
POKE 36876,0 
FORL=1 TO 500 
NEXTL 

POKE 36876,200 
FOR L = 1 TO 5 
NEXTL 
POKE 36876,0 
FOR L = 1 TO 500 
NEXTL 
POKE 36878,0 



138 



Appendice H: Codici dello schermo 

La tabella che segue elenca tutti i caratteri incorporati nella serie di 
caratteri del VIC-20 e mostra quali numeri occorre inserire (POKE) 
nella memoria dello schermo (locazioni da 7680 a 8185) per ottenere 
un carattere desiderate Inoltre mostra quale carattere corrisponde 
ad un numero rilevato (PEEK) dallo schermo. 

Le due serie di caratteri sono disponibili ma solo una serie alia volta. Cio 
significa che non e possibile visualizzare simultaneamente entrambe 
le serie di caratteri. Si passa da una serie all'altra abbassando i tasti 
SHIFT e COMMODORE simultaneamente, cio ha I'effetto di cambiare il 
bit 2 nella locazione di memoria 36869, il che significa a sua volta che 
I'istruzione POKE 36869, 240 predisporra la serie di caratteri in 
maiuscolo e POKE 36869, 242 predisporra la serie di caratteri in 
minuscolo. 

Se si vuole eseguire qualche serio effetto di animazione, si trovera 
che e piu facile controllare gli oggetti sullo schermo inserendoli 
(POKE) nella memoria dello schermo (cancellandoli mediante un 
inserimento di 32 che e il codice per uno spazio vuoto nella stessa 
locazione di memoria) che non stampandoli (PRINT) sullo schermo 
usando i caratteri di controllo del cursore. 

Qualsiasi numero presentato sulla tabella pud essere visualizzato in 
NEGATIVO. I caratteri in negativi non sono indicati ma il negativo di 
qualsiasi carattere pud essere ottenuto aggiungendo 128 ai numeri 
indicati. 

NOTA: VEDERE APPENDICE MAPPA DI MEMORIA 
DELLO SCHERMO 

Se si vuole visualizzare un cuore nella posizione di schermo 7800, 
trovare il numero del carattere che si vuole visualizzare (in questo 
caso un cuore) in questa tabella . . . il numero per il cuore e 83 . . . 
quindi battere un'istruzione POKE con il numero della posizione 
dello schermo (7800) ed il numero del simbolo (83) come segue: 

POKE 7800,83 

Nell'area centrale dello schermo dovrebbe comparire un cuore 
bianco. Notare che esso sara invisibile se lo schermo e bianco. 
Provare a cambiare la posizione battendo un numero piu grande 
oppure battendo un simbolo diverso usando i numeri della tabella. 



139 



Se si vuole cambiare il COLORE del simbolo visualizzato, consultare 
la tabella che elenca i NUMERI DEI COLORI per CIASCUNA 
LOCAZIONE Dl MEMORIA. In altre parole, per ottenere un diverso 
simbolo colorato in una particolare locazione, occorre un altro 
comando POKE. 

Per esempio, per ottenere un cuore rosso, battere quanto segue: 

POKE 38520,2 

' Nei POKE sullo 
schermo questo colore' 
e di un numero in memo' 
[dei numeri sui tasti dei 
colori della 
tastiera 



Cio cambia in rosso il colore del simbolo alia posizione 7800. Se qui 
ci fosse un simbolo diverso, quel simbolo sarebbe ora rosso. 
E' possibile visualizzare qualsiasi carattere in qualsiasi colore 
disponibile combinando queste due tabelle. Questi comandi POKE 
possono essere sommati nei programmi e risultare molto efficaci 
particolarmente negli effetti di animazione - ed inoltre forniscono un 
mezzo per osservare (PEEK) talune locazioni se si sta eseguendo 
programmazione sofisticata, ad esempio rimbalzi della pallina, che 
richiede questa informazione. 



140 



Codici dello schermo 



SERIE1 


SERIE2 


POKE 


SERIE1 SERIE2 


POKE 


SERIE1 SERIE2 


POKE 


@ 







u 


u 


21 


* 


42 


A 


a 


1 


V 


V 


22 


+ 


43 


B 


b 


2 


w 


w 


23 


i 


44 


C 


c 


3 


X 


X 


24 


— 


45 


D 


d 


4 


Y 


y 


25 




46 


E 


e 


5 


z 


z 


26 


/ 


47 


F 


f 


6 


[ 




27 





48 


G 


g 


7 


£ 




28 


1 


49 


H 


h 


8 


] 




29 


2 


50 


I 


i 


9 


t 




30 


3 


51 


J 


J 


10 


■*- 




31 


4 


52 


K 


k 


11 


1 




32 


5 


53 


L 


I 


12 


1 




33 


6 


54 


M 


m 


13 


u 




34 


7 


55 


N 


n 


14 


# 




35 


8 


56 








15 


$ 




36 


9 


57 


P 


P 


16 


% 




37 




58 


Q 


q 


17 


& 




38 


j 


59 


R 


r 


18 


t 




39 


<C 


60 


S 


s 


19 


( 




40 


= 


61 


T 


t 


20 


) 




41 


> 


62 



141 



3ERIE1 


SERIE2 


POKE 


? 




63 


B 




64 


® 


A 


65 


m 


B 


66 


B 


C 


67 


H 


D 


68 


H 


E 


69 


□ 


F 


70 


D 


G 


71 


□ 


H 


72 


□ 


I 


73 


Q 


J 


74 


Q 


K 


75 


□ 


L 


76 


S 


M 


77 





N 


78 


□ 





79 


□ 


P 


80 


• 


Q 


81 


□ 


R 


82 


m 


S 


83 



SERIE1 SERIE2 POKE 



D 

a 



o 



a 



m 

l3 



E 
H 

n 

D 
□ 



a 



T 
U 
V 

w 

X 
Y 

z 



B 



84 

85 

86 

87 

88 

89 

90 

91 

92 

93 

94 

95 

96 

97 

98 

99 

100 

101 

102 

103 

104 

105 



SERIE1 SERIE2 POKE 



□ 
ffi 

a 

H 

H 
□ 



ffl 

C 

c 
a 

n 
a 
a v/ 

a 

H 
E 
H 



106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123 
124 
125 
126 
127 



142 



Appendice I: 

Mappe di memoria dello schermo 

Usare questa Appendice per trovare la locazione di memoria di 
qualsiasi posizione dello schermo. Basta trovare la posizione nella 
griglia e sommare i numeri sulla fila e sulla colonna. Ad esempio, se 
si vuole inserire (POKE) il carattere grafico «pallina» al centro dello 
schermo, basta sommare i numeri al margine della riga 11 e della 
colonna 11 (7900 + 10) per un totale di 7910. Se si inserisce (POKE) 
il codice per una pallina (81, vedere Appendice H) nella locazione 
7910 battendo POKE 7910,81 sullo schermo compare una pallina 
bianca. Per cambiare il colore della pallina (o di altri caratteri) 
trovare la corrispondente posizione sulla mappa di memoria dei 
codici dei colori, sommare i numeri di fila e di colonna (38620 + 10, 
ossia 36830) per il codice di colore e battere una seconda istruzione 
POKE. Per esempio, se si inserisce un codice colore in questa 
locazione, POKE 38630,3, la pallina cambiera colore diventando blu- 
verde. Notare che durante I'inserimento (POKE) i numeri dei colori 
dei caratteri sono minori di uno dei numeri dei tasti dei colori come 
indicato qui di seguito. 

Elenco abbreviato dei codici dei colori: 



Codice 


Colore 





Nero 


1 


Bianco 


2 


Rosso 


3 


Blu-verde 


4 


Porpora 


5 


Verde 


6 


Blu 


7 


Giallo 



143 



1 2 


3 


4 


5 


6 


7 


8 


9 


1011 


1213 14 15 16 17 1.8 19 20 21 


7680 














































7702 














































7724 














































7746 














































7768 














































7790 














































7812 














































7834 














































7856 














































7878 














































7900 














































7922 














































7944 














































7966 














































7988 














































8010 














































8032 














































8054 














































8076 














































8098 














































8120 














































8142 














































8164 















































Pagina 1: Codici dei caratteri 

01 23456789 



dello schermo 

1011 1213 14 15 16 1718 19 20 21 



38400 














































38422 














































38444 














































38466 














































38488 














































38510 














































38532 














































38554 














































38576 














































38598 














































38620 














































38642 














































38664 














































38686 














































38708 














































38730 














































38752 














































38774 














































38796 














































38818 














































38840 














































38862 














































38884 















































Pagina 2: Mappa di memoria dei codici dei colori 

144 



Appendice J: Codici ASCII e CHR$ 

Questa appendice mostra quali caratteri compariranno se si esegue 
PRINT CHR$(X) per tutti i possibili valori di X. Essa mostrera anche i 
valori ottenuti battendo PRINT ASC(«X») dove X e qualsiasi carattere 
che e possibile battere. Cio e utile per valutare il carattere ricevuto 
in un'istruzione GET, convertendo maiuscole/minuscole e 
stampando comandi basati su caratteri (tipo il passaggio al 
maiuscolo/minuscolo) che potrebbero non essere racchiusi tra 
virgolette. 



PRINTS CHR$ 


PRINTS 


CHR$ 


PRINTS ( 


;hr$ 


PRINTS 


CHR$ 







16 


■ 


32 





48 


1 


Em 


17 


i 


33 


1 


49 


2 


M3m 


18 


" 


34 


2 


50 


3 


BT1 


19 


# 


35 


3 


51 


4 


|B3 
E3 


20 


$ 


36 


4 


52 


fl| 5 




21 


% 


37 


5 


53 


6 




22 


& 


38 


6 


54 


7 




23 




39 


7 


55 


8 




24 


( 


40 


8 


56 


9 




25 


) 


41 


9 


57 


10 




26 


* 


42 




58 


11 




27 


+ 


43 


) 


59 


12 


QQ 


28 


J 


44 


<C 


60 


1 13 


ffgji 


29 


— 


45 


= 


61 


HM u 


H?!?l 


30 




46 


:> 


62 


15 


CBS 


31 

14 


/ 


47 


? 


63 



PRINTS 


CHR$ 


@ 


64 


A 


65 


B 


66 


C 


67 


D 


68 


E 


69 


F 


70 


G 


71 


H 


72 


1 


73 


J 


74 


K 


75 


1 


76 


M 


77 


N 


78 





79 


P 


80 


Q 


81 


R 


82 


S 


83 


T 


84 



PRINTS 

U 
V 

w 

X 
Y 

z 



<* 



B 

m 

m 

B 
H 

n 

B 
D 
□ 



CHR$ 

85 

86 

87 

88 

89 

90 

91 

92 

93 

94 

95 

96 

97 

98 

99 

100 

101 

102 

103 

104 

105 



PRINTS ( 


;hr$ 


PRINTS ( 


;hr$ 


B 


106 


a • 


27 


Q 


107 




128 


D 


108 




129 


K 


109 




130 


\A 


110 




131 


□ 


111 




132 


□ 


112 


n 


133 


m 


113 


f3 


134 


D 


114 


f5 


135 


m 


115 


f7 


136 


□ 


111 


f2 


137 


B 


117 


f4 


138 


ki 


118 


f6 


139 


o 


119 


f8 


140 


+ 


120 




141 


□ ■ 


121 


^m 


1 42 


a • 


1 22 




1 4.3 




23 


isw^p 


144 


c • 


24 


gffl 


145 


m • 


25 


iTPEl 

CHI 


146 


IT i 


26 


Ed 


47 



146 



PRINTS 


CHR$ 


PRINTS ( 


;hr$ 


PRINTS CHR$ 


PRINTS CHR$ 


IPB1 

U2J 


148 


pftjifF 


59 


□ 


170 


c 


181 




149 


^g- 


1 60 


m 


171 


a 


182 




150 


B ■ 


161 


Q 


172 


n 


183 




151 


H 


162 


eg 


173 


n 


184 




152 


n 


163 


a 


174 


u 


185 




153 


□ 


164 


_ 


175 


D 


186 




154 


D 


165 


H 


176 


D 


187 




155 


m 


166 


H 


177 


H 


188 


I5E1 


156 


□ 


167 


H 


178 


H 


189 


reg 


157 


s 


168 


ffl 


179 


B 


190 


OS 


158 


B 


169 


C 


180 


B 


191 



147 



Appendice K: 

Derivazione di funzioni matematiche 

Le funzioni che non sono integrate nel BASIC VIC possono essere 
calcolate come segue: 



FUNZIONE 


EQUIVALENTE VIC BASIC 


SECANTE 


SEC(X) = 1/COS(X) 


COSECANTE 


CSC(X) = 1/SIN(X) 


COTANGENTE 


COT(X) = 1H"AN(X) 


SENO INVERSO 


ARCSIN(X) = ATN(X/SQR( - X*X + 1)) 


COSENO INVERSO 


ARCCOS(X) = - ATN(X/SQR 




(-X*X + 1))+ 7172 


SECANTE INVERSA 


ARCSEC(X) = ATN(X/SQR(X*X - 1)) 


COSECANTE INVERSA 


ARCCSC(X) = ATN(X/SQR(X*X - 1)) 




+ (SGN(X)-1)* 7T/2 


COTANGENTE INVERSA 


ARCOT(X) = ATN(X)+ 7T72 


SENO IPERBOLICO 


SIN E(X) = (EXP(X) - EXP( - X))/2 


COSENO IPERBOLICO 


COSH(X) = (EXP(X) + EXP( - X))/2 


TANGENTE IPERBOLICA 


TANH(X) = EXP( - X)/EXP(X) + EXP 




(-X))*2 + 1 


SECANTE IPERBOLICA 


SECH(X) = 2/(EXP(X) + EXP( - X) 


COSECANTE IPERBOLICA 


CSCH(X) = 2/(EXP(X) - EXP( - X)) 


COTANGENTE IPERBOLICA 


COTH(X) = EXP( - X)/(EXP(X) 




-EXP(-X)*2 + 1 


SENO IPERBOLICO INVERSO 


ARCSINH(X) = LOG(X + SQR(X*X + 1) 


COSENO IPERBOLICO INVERSO 


ARCCOSH(X) = LOG(X + SQR(X*X - 1) 


TANGENTE IPERBOLICA INVERSA 


ARCTANH(X) = LOG((1 + X)/(1 - X))/2 


SECANTE IPERBOLICA INVERSA 


ARCSECH(X) = LOG((SQR 




(-X*X + 1) + 1)/X) 


COSECANTE IPERBOLICA INVERSA 


ARCCSCH(X) = LOG((SGN(X)*SQR 




(X*X + 1)/X 


COTANGENTE IPERBOLICA INVERSA 


ARCCOTH(X) = LOG((X + 1)/(X - 1))/2 

I 



148 



Appendice L: 

Configurazione dei piedini per i dispositivi 
di input/output 

Ecco un'immagine dei connettori di I/O sul VIC: 




1. I/O Giochi 

2. Espansione di memoria 

3. Audio e Video 

4. I/O seriale (disco) 

5. Cassetta 

6. Uscita per I'utente (modem) 



1 7"7tTT 



1. I/O Giochi 




N. 
PIEDINO 


TIPO 


NOTA 


1 


JOY0 




2 


JOY1 




3 


JOY2 




4 


JOY3 




5 


POTY 




6 


LIGHT PEN 




7 


+ 5V 


MAX. 100mA 


8 


GND 




9 


POTX 





149 



2. Espansione di memoria 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 



ABCDEFHJ KLMNPRSTUVWXYZ 



N. 
PIEDINO 


TIPO 


1 


GND 


2 


CD0 


3 


CD1 


4 


CD2 


5 


CD3 


6 


CD4 


7 


CD5 


8 


CD6 


9 


CD7 


10 


BLK1 


11 


BLK2 



N. 
PIEDINO 


TIPO 


12 




BLK3 


13 


BLK5 


14 


RAMI 


15 


RAM2 


16 


RAM3 


17 


VR/W 


18 


CR/W 


19 


IRQ 


20 


NC 


21 


+ 5V 


22 


GND 



N. 
PIEDINO 


TIPO 


A 


GND 


B 


CA0 


C 


CA1 


D 


CA2 


E 


CA3 


F 


CA4 


H 


CA5 


J 


CA6 


K 


CA7 


L 


CA8 


M 


CA9 



N. 
PIEDINO 


TIPO 


N 


CA10 


P 


CA11 


R 


CA12 


s 


CA13 


T 


I/02 


U 


I/03 


V 


S02 


W 


NMI 


X 


RESET 


Y 


NC 


Z 


GND 



150 



3. Audio/Video 




N. 

PIEDINO 


TIPO 


NOTA 


1 


+ 6V 


10mA MAX 


2 


GND 




3 


AUDIO 




4 


VIDEO LOW 




5 


VIDEO HIGH 





4. I/O Seriale 




N. 
PIEDINO 


TIPO 


1 


SERIAL SRQ IN 


2 


GND 


3 


SERIAL ATN IN/OUT 


4 


SERIAL CLK IN/OUT 


5 


SERIAL DATA IN/OUT 


6 


NC 



5. Cassetta 

12 3 4 5 6 



A B C D E F 



N. 
PIEDINO 


TIPO 


A-1 


GND 


B-2 


+ 5V 


C-3 


CASSETTE MOTOR 


D-4 


CASSETTE READ 


E-5 


CASSETTE WRITE 


F-6 


CASSETTE SWITCH 



151 



6. I/O Utente 

1 2 3 4 5 6 7 8 9 10 11 12 



ABCDEFHJ KLMN 



N. 
PIEDINO 


TIPO 


NOTA 


N. 
PIEDINO 


TIPO 


NOTA 


1 


GND 




A 


GND 




2 


+ 5V 


100mA MAX. 


B 


CB1 




3 


RESET 




C 


PB0 




4 


JOY0 




D 


PB1 




5 


JOY1 




E 


PB2 




6 


JOY2 




F 


PB3 




7 


LIGHT PEN 




H 


PB4 




8 


CASSETTE SWITCH 




J 


PB5 




9 


SERIAL ATN IN 




K 


PB6 




1(8 


+ 9V 


100mA MAX. 


L 


PB7 




11 


GND 




M 


CB2 




12 


GND 




N 


GND 





152 





2Th- 




3 U. 




O LULL 


.— 


o _j _ i oj co to '-< 


— (C 


LucE:!i:iJi_j_j_i_j 


a 


a; e: to to '.o ct: ce: q; ct; 


_ i o ct: ce: o; i— i~i— i— 


o x o o o o o o o 


(0 <ft 




■D = 


to to to tO '10 <Ji 00 to to 


c o 


hhhmhhmhm 


0) £ 




a> .E 

-1 </> 


pppsppss? ■ 



ui 
-.si 
o 

LL 

o 

10 



a 

u 

o 

Cl 




i.jj r*-- © ■»-* y"' © in © '-* 

CO CO t Tf * in m '•£< '•£' 



153 



I'M 

CO 

o 

h- 

© 



'•Jj 


(M 


rt 


p i 


L, 


v. 


CJ 


CM 


CJ 


CM 


o 


O 


LU 


HI 


i£ 


■•./ 


u 


o 


a. 


LL 


■ ■ 


ma 


'■£> 


CM 


-* 


CO 



r j CJ (VI 

II I I 

5; © © 

CO UJ 111 

th CM i£ i£ 

CM II O O 

+ Z 0.0. 

LU ■■ " ■" 

II 0"; 'XI CM 

O CM ■* 05 

• ■4- K k 

t-i LU © C& 

II II CVI CM 

Q U_ O II 

+ s T ■* LU UJ 

x' CM 111 II ^ *: 

II I I U. O O 

'.£ LU I- Z 0.0. 

» III O III 

(VI ii II I N CM 

CO O LU H © N 05 

(L Q © © K '■ 

cj z 11 in "" "• 

I CM <r U. O II 

HI "t © Q H © © 

LU '• I Z O LU LU 

^ h ii I O 'XL '■£> ':*: CM 

I 1 ii ■• oot o 05 
Cl LU CM I © © 0- •■• CL '• 
■■ © lu oj cc Q 11 = ^ ■■ <t ■• rr 

CM CO it! II II © LL J = ID = O 05 OJ CJ OJ 

f.-i -rn O •"• •-•• N Z II _ CO = = Z H N I CO I 

' O 0. CM CM Z LU : O «h Q£ O •> O H -• © 

«-i I- ■■ CU CJ LU I 10 — O O D © »h LU X **> LU 

1 O C<i "••- X I I- CM 1IB O I- H ■■ + ii UJ + ii 
LU © '.£1 "• •■-•• E t- «-i t-i IT' l£0 LU •"• © O Z © O 
LU •■ '• LU LU + CJ CM O «-< O Qi N LU 0. •• LU (L 

© © 'ii © LU CJ I I ID © CO * t- © II = : = ■■ = = = •• Cfi ii " © ^ ■■ 

© ffi O II LU 05 '-J5 © CJ II A CJ O II CC ■■•■■ ■■-■ r-. ■■•. ,-s r-. r-. ". ,-i O >i> © O CM 

155 Z* o. a ii *-< 05 cti !-• o v cj o cc z cc cc cc = «r cc © = •-• o. * *-i o_ 05 

Z Z " Z O Z »-i Si Z •■ ■•-•• + •" Z LU •-■• •-■• •-•• n v w v n ii ■• '• O •" '• 

LU LU CJ LU CL LU 05 05 LU CJ © © -- LU I 05 © © U 05 © 05 □ LU '•£> 05 H CJ 05 

i i co i i ■-■ CO •-•■ I CO ••-- CO 05 I I- © 'X © ti © CC CC M LU M5 CJ *h CO Ci 

i- (_ '• h- •• t- v Si v H '• ii MJ '■ H 1/5 H I- H = I — I — I — s 0. '• I II '• I 

0!SlllM'TH|-H|-OOIJlNC"S'i|-l-l-l-l-t-(-l-l-OOCCiO 

II II LU II + II Z O Z II LU LU A LU V AZZZZZZZZZLULUCCLULU 
QQiilUUJ H i>-i|-H|ii;a.oy(EIi-'i-iHMHHHwHyy(t:iii 
LlU-OLl II LLU.DLLtLOLLtLOU.tLCj;0£Cl£&:a£0£0;C£C£OOOOO 

HHQ.H|ljMHClHHa.HH(LHHQ.(L(LQ.a.(l.iLa.ll.(LlLllll(L 

© CJ * 'Cl 05 0"i Q *h C'i CO * *.i3 h- ffi O h CM li5 © 10 © 10 © iO © © © © © ID 

f%. f._ f-. r % - N N 0'i co 05 05 co 05 © © cj CJ cm cj iVi i"«5 © © 1-1 »-i © © i-« CJ CO CO 

rt rt ^ ,h ^ rt ^i ^ ,h rt rt th t-i ,-! CM CJ CJ CJ CM CJ CO CO 05 05 * 10 IO ID ID ID 



154 











i 
i i 














rt 










„ 
























UJ 














-. 
































X 














CJ 










C'J 






















O 














1 










CO 






















LL 
























K 






















•" 














! — i 










Ei 






















C'J 

CO 














+ 

UJ 










CJ 

+ 






















a. 








t- 






UJ 










LU 






















i v l 








X 






ii 










LU 






















+ 








LU 






l_l 










V 






















1 1 








T" 






LL 










! — ! 






















LU 








It 






■ ■ 










Cl 














El 
















o 






t 






























O 








\ 






a. 










CJ 














'JJ 

tH 








0- 

■ ■ 








1-t 

1 
















CO 














a. 








UJ 














LL 










T-f 




TH 










CJ 








CO 








~> 






1 1 










i"'J 




■3 










CJ 








a. 








LU 






+ 




.-•- 






+ 




g 










1 

o 

ii 








CJ 








x 






LU 




1.T1 






UJ 




■a 
















{ 








o 






LU 




CO 






LU 




H 
















i' "i 








LL 






ii 




, 










jg] 
















LU 








■ ■ 






|_| 




T-H 






D 




§ 










D 
CL. 




H 












tH 






LL 




■■.._ 


h- 


1- 


Cl 




S 












X 




O 








1 






■ ■ 




G 


":•:" 


";.;" 






k 










■■ 




UJ 




LL 








LL 






-+ 






Q 


LU 


CJ 




£3 










Si 
'■£• 




T 




■■ 








LU 










K 






CO 




m 












"" 




CJ 








h- 






U. 




!HT 


aa 


aa 


a 




|i5j 










t-i 




H 




co 








l0 






E 1 




1— ! 


Ei 


Ei 


CJ 




Ej 










a. 




X 












00 






+ 




1 


03 


CO 


CJ 




iE] 










CJ 
Cv! 




UJ 




l . 








rf 






LU 


CJ 


ID 


n 


(~i 


+ 




H 












Z! 




CJ 








CJ 






UJ 


CO 


i-H 


f- 


H 


LU 




z 




aa 






+ 




■ a 




+ 








n 






'^ 


K 


".. 


T-! 


"TH 


LU 




1- 




..-.. 






u 




D 




O 








<r- 






o 


LL 


■X 


II 


II 






--r 




CO 






UJ 




N 




UJ 








'"! 






LL 


'_' 


~;- 


! 1 


'_' 


o 




l—l 




1-i 






O 




D 




\/ 








10 








+ 


Qj 


LL' 


CL 


Cl 




CL 




"*., 








H 




o 








CJ 






■ a 


Ei 


'j± 


O 


O 


aa 




CL 




J 






ll 




rH 




LL 








II 






Ei 


CJ 


o 


LL 


U. 


CJ 








Ix! 






"" 




II 




II 








o 






UJ 


+ 


Cl 


aa 


aa 


CO 




h- 




■._.■ 






(S 




I 




CJ 








LL 






la. 


LU 


as 


Cl 


CO 


a. 




1_1 




H 






>0 




o 




CO 








O 






El 


UJ 


E' 


CJ 


CO 


C'J 














r-t 




Qi 












LL 






CM 


JiL 


CJ 


CJ 


CJ 


1 




CO 




a- 1 










O 




K 






Ei 


■• 


CJ 




+ 


o 


|_| 






LU 




v 




1 






tH 




U. 




t-i 






'•£■ 


H 


CO 




LU 


LL 


t- 


CJ 


CJ 


UJ 




X 




10 






1 




ta 




1 




aa 


L . 


X 


a. 




UJ 


aa 


iH 


1 


1 


V 


z 


■r 




tH 






o 




O 




i" '1 




® 


CM 


LU 


CJ 




ii 


Ei 


II 


LU 


LU 


O 




H 




a. 






111 




O 




UJ 




fc . 


1 


Z! 


I 




u 




C3 


LU 


LU 


Cl 








CC 






x' 




"•■ 




ii 




21 


UJ 


■ a 


LU 




LL 


U-' Lt 


V 




■ a 




1 










o 




(E 




O 




I> 


UJ 


o 


LU 




■ ■ 


l""l 


u 


Q 


Q 


CJ 




Q 




LU 






Q. 




I> 




LL 


CJ 


UJ 


x 


*-. 


x 




CJ 


+ 


Ll 


Cl 


Cl 


CO 








ii 






■■ 




UJ 




■■ 


CO 


!ii 


o 


1-H 


O 




rt 


■t-l 








a. 




Oj 




Q 






(S 




ii 




C'J 


a. 


O 0. 


1 


LL 


E' 




CJ 


(B 


CO 


CO 


TH 




! 1 




Cl 






U) 




o 




CO 


CJ 


u_ 


ta 


T 


■ ■ 


t 


i-i 


+ 


CJ 


CJ 


"-* 


1 




u. 










•i-i 




Q_ 






CJ 


■ a 


C'J 


;> 


CJ 


'.Jj 


CJ 


LU 


T-4 


CJ 


CJ 


LU 








E' 


- 


z z 


a. 




■ a 




•a 


+ 


Ifl 


* 


UJ 


CO 


!Z 


+ 


LU 


•-. 






LU 




Us 




Ei 


k 






T"t 




TH 




t-1 


CJ 


i-H 


*•■ 


ii 


K 


LU 


LU 


;x 


X. 


T-i 


tA 






IBJ 




CJ 


k 






+ 




1 




+ 


UJ 


L, 


T-I 


o 


tH 


I 


LU 


O 


-> 


1 


1 


O 




jffl 




1 1 


f 






(J 




Q_ 




o 


ii 


■r 


1 


LL 


1 


H- 


^ 


Cl 


LU 


LU 


LU 


Cl 




C3 




h- 


t 






UJ 


Ei 


UJ 




LU 


O 


~> 


UJ 


■a 


LU CJ 


o 




ii 


LU 


LU 


aa 




= 


<z 


T-) 


Ik 


I 




ii 


Si 


h- 




ii 


LL 


UJ UJ 


CO 


LU CJ 


LL 


Ei 


i_i 






C'J 




L7 


ii 


II 


IS 




o 


i-t 


00 




o 


ta 


ii 


ii 


10 


ii 


* 


aa 


L. 


LL 


O 


O 


CO 






_j 


_l 




= = 


a. 


+ 


Ei 




LL 


CM 


o 


o 


CJ O Si 


CJ 


LL 




Cl 


LL 


a. 




H- 1 


aa 




..-.. 


/-.. 


■> 


CO 


O 




■ a 


CO 


Cl 


LL 


n 


0. CJ 


'Jj 


i"*J 


E' 




aa 


LU 


S 


Ct 


05 


Ct! 


cc 


CC "■ if 


(5 


(M 


(- 






y 


■■ 


■■ 


h- 


aa 


+ 


a. 


+ 


•.. 


|Vj 


CO 


LU 


K 


Cl 


CJ 


o 






10 y~t 


tH 

i 


in 

a-* 


Ei 


CJ 

CO 


CJ 

cm 


a-, 

+' 


CJ 
'■Li 


co 


CJ 
CO 


Ei 
CO 


CJ 
CJ 


C'J 
CJ 


1-1 

1 


CJ 
CJ 


CO 
CJ 


o 


I 


T-l 10 


•H 


LL 


ca 
■r 


m h tii 

iinc 


CJ '• 


z 


ii 


II 


"■■ 


i 


CJ 


K 


CJ 


a. 


'■ill 


+ 


+ 


"7" 


«.. 


a. 


Cl 


z 


+ CJ 


I£ 


aa 


f- 


1— r |— 


TH Lj 


^> 


o 


O 


o 


o 


C'J 


LU 


II 


LU N "-, 


UJ 


LU 


-> 


LU 


LU 




t 


1 T-I 


^- 


tH 


h- 


hl-;!- 


O UJ 


UJ 


Q 


aa 


UJ 


UJ 


+ 


UJ 


! - ! 


LU 


V + 


UJ 


LU 


LU 


LU 


LU 


1- 




D O 


UJ 


+ 






t- ii Si 


ii 


Oi 


Ei 


ii 


ii 


UJ 


ii 


Qi 


ii 


UJ LU 


ii 


'•-.■•' 


V* 


'•-.■•* 


V 


--..- 


t— a 


II 1- 




<r 


r-l 


H H H 


OO II 


O 


O 


II 


O 


o 


II 


n 


u 


'.J 


LL II 


i_i 


o 


o 


f~l 


O 


LU 


CL 


z> o 


o 


ii 


LL 


LL Ii' til 


O 0- _i 


0. U. 


LU 


LL 


LL 


UJ 


Cl 


U. 


LL 


m LU 


CL 


LL 


LL 


CL 


LL 




Cl 


a o 


LL 


■i 


U- 


Cl Cl 


j_ 



Ei Ei *-« Si -i U0 ajj N s ii"i C£e f-._ © .rt i;,j co at u0 'jj f-- CO (J, S Ei h Tf |fi ti'i Q 

<J"l El O rlrt T-I r-f CJ aH »J- »t Tj" rf (/) y"l [fl \ff [f, |J— 1 y"i lj-| \f, jj", l.£, (JJ © © © t-i CJ 

10 a£i a£i ■.£, tj;, ijj yj (.0 '.fl '.j3 IjO 'J3 'JJ '.£• '.£1 tfl '.£• 'JJ '£1 '.£1 '£1 '.£1 (JJ l£i N N N N N N 



155 



+ 

HI 

11 



CM 

1 

Ui 

II 
u 

w 

i 

10 



g 



S3 



,-. .-. i 
<e en i 



1 



0. 



I- 









OJ 

I 
LU 

II 






H H- 



HI-I-: = = = 
H H t- t- H h- H- 



CE:a:UJQ;Cj/(i:Q;Q;Q; Q ;(_ll II 

a.a.za.a.a.Q.a.a.a.Du.Q 

ID ID <B in iS »h cm ijj CM VO N <S © 

n co * •* id id id ri id id id uj o 

N N f*- f-- !-- !-- N N N N N N 0C' 



CM 
N 

T-l 

o 

K 
O 

t-i n 

II 

*-> id 

•• © 

O m 
CM 



LU 

h- 



Si 
CO 

T-l 

+ 

* 



LU 










a-i 


ZOO 










LU 


•r -• 










ii 


3U-i 










i_i 


(=i»-i 










a. 


+ 












CO 










Si 


>*- 










II 


m •■£• cd 




h- 






—y 


-< ii 




"x" 






—7- 


*i- 




LU 






UJ 


■Ti •■ 




"7" 






X 


LU = 










H- 


iii * 




i-M 






© 


O * 




-. 






II 


a.* 




cc 


h- 




V 


i — 




LU 


":■:" 




1 


LUO 




V 


Cjj 




U. 


s: ii h- 




o 


2: 




1— < 


O-JLU 




Cl_ 








OJE: 






CD 




>M 


• • O D- 




in 


■Xi 




1 


n; ••-•• o lu 




© 


1-4 




1 


LU C-.J ii 




io 


11 




II Oi 


_i-^ce: 




+ 


.--. 




~i O 


_l •-•• LU > 




© 


■X 




. uu 


•-•pci-jz: 




© 






X>h- 


j£; e: _j "X 




■* 


Ha 




-LU 


►-< i— i 




00 






-fSZ 


(=t^h- 




CO 


Cd 




T-l 


l-H 


CD 


o 


tH 


in + cc 


= '£1 ■*• X 


'•£>^ 




CM 


CO ct 


5 CO H- h- 


T-t 


-t 


o 


"7" 


t-LU 


-. 


n- 


H- LU 


••£i 


a-. 


-3- 




X 


▼-* y 


r- 


00 


■«— 1 


h-*LU 


▼H 


CO 


II 


© 


iTiCt 


CO 


ii 


•X 


J^ 


LU •• 


= ' o z X 


lucc 


Cf 


_2b 


i*;-* 


y f ••- >— 1 1— i 


V 


Ct 


■_■ 


Ll 


O II 


LU II CL CL O 


o ■• 


Ll 


i—i 


ClLl 


ii." O CL CL Q- U. 












<3 


CD 


••— 1 


CO in 


•Si —< CM CO CO 


iT. -< 


CM 


CM 


rj c-.j 



156 

















1— 




n 




















CO 


o 




o 




















CO 


co 
























l_l 






rr 




















1— 


UO 




rr 




















o 


1—1 




+ 




















CD 


II 

i 




_J 
_J 




















u-.i 






II 




















1— 1 


CO 




_J 




















II 


CO 




_1 














































— 


+ 




1— 














CO 






Si 


CO 




X 














'3 






CO 


CM 




LU 














U0 






CO 


i-i 




7 














O 






+ 


-. 


















H- 






CO 


CO 




Si 














O 






CM 


1—1 




Si 














co 






i-H 


+ 

CO 




in 

CM 














r 






CO 


+— 




i_i 














— 






1—1 

+ 


■•£• 
i—i 




i— 
i—i 














1=1 






CO 


* 




ii 














LU 






t— 


eft 




ct: 














D- 






■£i 


LU 




Ct 














o 






i—i 


'••.•■" 




ct 














Ct 






* 


o 




I™ 














K- 






CT-| 


u_ 




u. 














0"i 






LU 




















LU-th 






-Jb- 


i—i 




Z 














1- « CM 






l_l 


II 




* 








h- 






-«- ••*• 






Lu 


— p 

K 




*■ 








X 






LU LU CM 












* 








LU 






X CO CM 






1-1 


1—1 




f=i 


<:-i 






X 






• • "X + 
H WUO 






II 


t- 




lu 


l">"p 

II 






h- 






-K. i—i 








II 




o 


.■-. 






X 






LUX + 






i—l 


1— 




Ct 


u. 






LU 






21 O CO 






+ 






H- 


■w' 


H; 




T 






' ' O CO 

+ g r - 






II 


CM 
CO 




CO 

LU 




LU 




■—1 










H- 


-. 




l-i 


u 


-7 




+ 






Lug II 








i-H 






X 






u. 






CM II g CO 






Si 


1 




Ct 


1— 


S 




II 






CM Lug • 






II 


CO 




o 


CM 


Si 




u. 






o. •■ n •-< 

LU --. = II 
H- Lu H- CO 






co 

CM 


LU 

o 




LU 
LU 


C r i 

II 


CO 





c-.j 






CO ••-■• x x 






CO 


0_ 




X! 


1=1 


1—1 




CO 






Tf lKlM LU 






-. 






* 


'•_•• 


II 


X 


-. 






•■*• -. ct x 






i-i CO 


Si 




* 


V 


Ct 


"~~l 


1=1 






i_i « CL 1— 






CMLU 


II 




I 


LU 


ct 


ct 


H 






hWTS 






Oiii 


CO 




LU 


U~iCt 




m 




ct co - :t yj si 






l-O 


7 




0_ 


+ 


H; 


o 




i i 


II O X CD 






OH LU 




§ 


U. 


05 LU H- 


X 


u_ 




LULUCul- 1=1 






OZ 


X 




H-tl 


>— 1 


i"M • • 1— 1 X 


LU 


■r-j • 




1- Ct: • Si 2 






■ LU h- 




LU = 


CJ ■• 


nil - ) 1 ii LU 


~z~ 


CM Ui 




LU 


O LU ' £i iX 




CM CO X 


Si 




xt- 


CM LU 1— 


-. -a. -• x 




CL + 




v 


Lu + -< = 




CM 


II t- 


'•£■ 




IX 


Cl_ + X 


CO "3- LU ■* • - 


Si 


LU CO 






• CO II = 




1 


CD CO 


i—i 




V i— i 


LU COLU 


1-1 t-1 H- i-l Si 


Si 


h- + 




— Zl 


•3 + .-. ,-•••. 




CO 


x 1 -* 


II 




■— iCt! 


1- + X 


+ + CO + CO 


Si 


t'fi o 




'X 


•£i O '30 V 


Si 


II 


LUi-t 


.■--. 




LUCL 


CO • • 


CO C;"j © C/5 UO 


OJ 


•*o 




111 


— • o r-- vt 


CO 


CO 


X II 


1—1 




XX 


tOh 


*%— t— t— 


1 1 


■*H- 




i=t 


-• h- i-i CC 


"7" 




1- •-•■ 


1 




f i LU 


-frH-X 


i.£i i.£i H- '£i H- 


h~ 


Olxl 






0i LU CO Lu LU 


CM 


'•£i CO 


CO 


1—1 


X 


O LULU 


1—1 1—1 ll~i 1-1 i—i 


tH 


1- + 




T^ 


r« + ••_•• »-* 


X 


CO 


rf •-•• 


••_•' 


CO 


2:1- 


1- + X 


■* * -H * II 


II 


<s o 




LU 


i-i O 'i£ •• 


1- 


-. 


rx-ii 


V 


-. 


LU CM 


CO ■ • 


i-i 1T1 CTi II Oh Ct 


C^. 


II II 


i-H 


CL 


CO II LU W 


CO 


CO 


r •- LU LU 


CO &. i-> 


II II -I 


C.1 LU LU >X LU Ct 


h- Lt 


LUO + 




LU 1=1 LUX 


II 


LU 


V LU LU 


LU 


• II 


LU« + 


is:' ii ct i; cc: 


X ct 


Ctlii 


o 


i-l 


iaiCtCul- 


o 


!ii! 


CO Cl_ 


UL 


'••■■•' 


•^1- 


ii: ct: u_ 1— 


LU O 


oo 


II 


II 


O O Lu LU Lu 


i_i 


LuLuLu 


o 


II U.C' 


j 11 


O CL Cu Lu Cu Lu 


XLu ■ 


LuLu 


Q 


iU.CLU.mO 


1— 1 


O. 


1— 11— 1 


l—l 


LL 


U. w u. u. u. 


■ri 


~i- 




















h- 


ffl UO CO ,_ ' Si 


Si Si 1=1 


•.£) r- 


CO 


>T, 


CO UO '•£' Si 


coin 


CO Si 


i-l 


U> CO i-i c 


:■ CM t '•£■ 


Si '3 S' i-i i-i CM 


CO "* iX 


CM C\| 


CM 


1 '--d 


CO CO CO •*!" UO 


u-i 


'.£■ IS- 


IV 


r-- 


00 CO CD CO CO CO 


1X1 U~» U"i U"i in U"i 


UO UO LU 
















s 


i 








Ct 



157 



LO 




CO 


© 


i— 1 


© 


+ 


© 


ffi 


CO 


CM 


o 


■—4 


1— 


-. 


1~-i 


00 


II 


H 


or 


+ 


■r 


I", 


ii: 


4- 




••£• 


ii! 


T-H 




* 




Ch 


© 


w 


-. 


^•L 


-t 


o 


i-H 


u_ 


+ 




CO 



in 



o 
cd 



i3 

'£' 
II 
CD 

CO 
CM 

I 
Ll 

II 



cm 

0.J 



IX 

UJ 

h- 
cc 



i— 1 

1 


<7; 
LU 


II 

o 


o 

LL. 



'■£> 

+ 



© 



LU 




>: 
V 




II 
i-l 







© 

r-- 














1— 1 


oc 




X 






— ■ 




o 














-7- 


_l 

1=1 h-_ 




i 




CI 
CO 


CO 




o 














ii 


yz 




« 




-. 


UJ 




o 














h; 


UJ 

D- x 




i 




CM 
CM 


o 




© 














1— 1 


cc 




w _ 




+ 


o 




© 














'._.• 


© 




«•— r" ~ 




o 


Ct 




ir.< 














+ 


-. 




St 




LU 






w 














CM 




= "' 


5t 




-X- 

o 


UJ 
Ii 




» 

CO 










© 




© 


= ii 
1— O 

«xa_ 
t ■— ■ ■• 

d ct; co 


* 
* 

1=1 


St 

y ^- 




a. 

-r-H 
II 

Cm 


TJ-' © 4- 

i-i -. o 
+ cox 

CO ■>-> g 




o 
o 

u]© 

X— i 










o 
h- 
i_i 

■D 




r-- 
11 
u_ 

T— 1 


x a. cm 


"7" 










i— i-i 










© 




| 


x ■• ■* 


■r 


St- 




UJ 


'•£i 0'"' g 




CM O 










© 




H 


O © 0-J 


co x = 


Sr 




X 




'•£"1- 










UO 




UJ 


O CO CJ 


+ X> 


x ■*— 




H- 


-4 t-g 




II O 










W 




-r 


'•£« + 

i— r-- © 


CM O UJ 

co o '^; 


ft ■ 




© 
II 


* '•£• g 
>T, -h g 




•-■■ CD 
i=i - 








© 


CO 




LU 
X 


UJ 1 © 


+ 


ft ■ 




W 


uj -JK-55I 












r- 


o 




H- 


j*; ©•■*• 


■*i— > 


S3 




i=i 


is: a. = 




i It 








i_i 


CD 




t— 1 


'— i © 00 


'•£' UJ X 


SB 




"7" 


OUJI- 




UJ« 








h- 


— - 




II 


o •■*• CO 


+ i£C£ 


iS 




<r 


li jiiX 




UJX 








i i 


UJ 






li CO O U"i 


CO o 


in 


Z 


• • o *- • 




CM Ii UJ 






UJ 


CD 


X© 




CM 


CO 1— •— i 


CM O h- 


SB 


—■ f 


z 


— 1 lili 




CM ii X 






+ 




i-r- 




* 


II CM + 


i— t Od •— < 


ft ■ 


+ 


,■•■■-, 


i •• a. 




1 OH 


© 




Li- 


© 


© o 






u. c-.j © 


+ X 


ft ■ 


CM 


*•,..•■ 


_J©X 


'!S!i 


1-4 © CO 


© 


© 


li 


II 


CO 1— 




i—i 


= O + CM 


'•D* 


15 


CM Vt 


11 II UJ 


■H 


II '£iC0 


CM IV 


U_X 


II o 




■._.■ 


= 5 • © * 


-••*■ 


* 


•r 


_j yi 


■H 


(=l II + 




~7~ 




"?" 


•■-•• CD 




1=1 


5 5 £: S '^ u - 


Ci u. 


XXI — 


-i^_ 


• • .■-•. © CD 


Hi ui 


a uj u. ■ ■ 






SS^t CM 


+ » 


?■?■] 


CM 


i—i 


UJ UJi-i 


UJ 


a i=i co co 


X X 


CO 


X 


!-■; "^ 




ii 


5 S '•£' CO + 


+ 




X X CM 


X 


CO '•-•• '-£i -• 


1- 1— 


- 


h- 


^; -■ 






S S 'H ■"'"I © 


h: = 




© 


w 


|— ^— t-h 


h- 


-• i; r-- i=i 


© 


© 


u_ 


i— i 


UJU. 




t 


SS^ii co 


>h-h- 


h-f-i 


CO 


•r 


— • CD CO 


© 


1=1 UJ V UJ 


II 


II 


LU 


II 


UJUJ 






— 5 <Ti CC '£i 


UJZZ 


X 121 ' 


'•£■ 




ii ti m :r 


II 


UJUIOii: 


X X 




u. 


li ii' 


T— 1 


i—i 


= = ii ii r-- 


i; i— 1 1— i 


i— 1 1— 1 1 


r-- 


i— 


M JOD 


m 


ii li u. o 


u. u. 


o 


U_ U.O 


II 


U_ 


EEhQ II 


i_i ii ii ii ii 


n 


UJ 


Ll. Ll. li_ tx U_ 


'_i U_ >-i Cu 


1— ( 


1—1 


li 


1—1 


"— i Cl X 


l-H 


UJ UJ > u_ o 


ii a. a_ a. ii CC 


CD '•£ 


1 1— 1 l-H l—l • • 


l-H 


li 1-1 
















ct; ct 








»h 


1 |— 




© uo © 


in 


© 


uo 


© © 


© 


U _ .i 


© ■— < in 


CD © if"i 


© © ' 


3 


© II 


■ , ~ , C''J U"i >c 


© 


uo © © © 


1— 1 


t—i 


CM 


CM 


co •* 


© 


© 


— I r*.j — * •— i f-H 


'" M 00 00 


tllT 


■O 


r- _i r-- r-_ r- uj 


CO 














c-.j 


CM 



158 



S' 
'£i 



UD 



<:■■! 
co 

i 
u_ 

LU 

O 
LL 



■£i 



CO 
CO 

oi 

co 

i 

ll 
LU 



<?,} 




1— 1 










LL 
















'•£i 




-. 


























II 




CO 










CO 
















CD 




CO 

+ 










CO 
















CO 




Ll 










CO 
















CO 




LU 










CO 
















■+ 




•-.-■' 










+ 






H- 










u_ 


■* 


o 










U-Si 






":•" 










II 


-. 


Cl 










LU -• 






LU 










1— 1 


U. 
t i 


Si 










iiU. 

Ci Ci 
















CO 


+ 


>■£> 










Cl + 






Si 










co 


O i"! 


T-4 










■ • i-H 






'■£■ 










* 


CCi 1 


-. 










CO 1 






i~i 










.--. 


= Li. 


t-H 










CO U. 






h- 










■£i 


LU 


1 










-■UJ 






tH 










+ 


II M 


-*u_ 










■—i ii! S> 






II 










.--•. 


i_i 


-•UJ 










1 O -• 






O 










Si 


LUCl 


U.iC 










LlClLl 






O 










w 


ct: •• 


i i ft 










UJ • • O 






LL' 










* 


Orf 


+ LL 










iiSi + 






i_i 










."■. 


O -• 


CO ■• 










O -CO 




CO Ll 








UD 


1—1 


S'- 1 


>:--\ cd 

1 '•£• 


UD 






h- 


ll u_ <:-i 
• 1 




LL 


O 








CO s 

1— i 


£3 


SI + 


U.i-1 


f'~l 






">:" 


CO + U. 




LU 


-. 








+ CO 


X 


H~ 


UJ - 


+ 






LU 


ro -r-i UJ 




1-X 








CO i-i 


ct: 


s + 


'••.■•' 1—t 


00 






"7" 


-• + ^ 




CO 


Ci 








CO -^ + 


•■-•■ 


Wu. 


o + 


CO 


i— i 






1-1 Ll O 




i.DLU 








'-i 1 D- CO 


i- 


= LU Clll 


1—1 


1 


"i- 


h- 


+ UJCl 


Si 


i-H 


V 








-■ Cl , -• *- 


— i- 


I-^ 


• UJ 


-. 


Cl 


-. 


":■£ 


u-it: •• 


-. 


* 


\~t 


H- 






CO UJ ■* '•£> 


t-H 


"7" O 


■*ii 


CO 


UJ ■* LU UJ i"~ i Si 


CO 


CO Cl 


":•:" 






1—1 1 — 1-1 i-i 


"•--■ 


i— i Cl 


-. Cl 


1— t 


1- 


•1—1 


—7- 


iiiLL - 


1—1 


CO 




LU 






+ CO + •* 


+ 


ii: •• 


CO 0_ 


+ 


i.O 


+ 




O •• CO 


+ 


+ 


.■-.. 








CO © CO iT'i 


CD 


Ci_"+ 


co ■• 


CO 


S' 


CO 


S' 


Cl S> CO 


CO 


U.X 








■*- O 4- UJ 


m 




+ Si 


+— 


o 


4- 


CO 


• -. + 


■•i— 





CD 


1 — 1 






i.£i h- '-£i ^: 


'•£i 


S Ll Ll "£i 


'•£i 


1— 


CO 


f"l 


CO Ll Ll 


•£iH- 


■■_•■ 


i— i 






1-1 !.£■ '-< O 


r- is 


■*-* 1— 1 


1— 1 ••—1 


i— i 


'•£■ 


■H 


I— 


CO O 


1—4 


LL 


ii." 


-. 






•*•—<*• Cl X 


n n 


+ + 


+ -. 


* 


t— i 


* 


1—1 


-• + + 


* 


Ii 


UJ X 


•jL, 


Si 


Ch II Ch •• Ct 


u. X 


OU.U.U. 


Oh 


II 


'7-1 


II 


U.U.U. 


Ch 


XLU 





Ctr-- 


UJ > UJ t- Xi 




0"i LU LU LU UJ 


J- 


LUCl LUUJUJ LU 


O 


Cl 


UJ 


1 


1 1 


ii: cl if x h- 


■*— i is 


II 'j£ 


j£. 2l1 


•■■■•' 


Qi 


Ja£ 


Qi 


'••■••' V :•■••* 


Jii! 


Ii.' 


II 


'•-.■■' 


1— 


1- 


O O O LU UJ 


n ii 


o o 


o o 


O 


i_i 


i_j 


i_i 


O C' C* 


I_l 


l_l 


V— 1 





LU 


1 1 


ClllCl X Ct 


UJ « 


CO Cl 


a. a. a. ii. a, ii. a. a. a. a. u_ 


1— 1 


Cl Cl: 


O 


N 






























Si i-i UD Si Si D- 


Si S> 


T-. i.-.j 


CO Si 


i—l 


CO 


fi 


*F 


Ci i-i CO 


CO 


Si 


^1- 


C£l S 


>T| 


Si Si Si "H CO « 


tH ® 


O '3 


S» •'-• 


CO 


CO 


CO 


CM 


CO CO CO 


o'i 


^-t ■* 


Si 


■Ti 


Si Si Si Si Si iX 


'"•0 UD 


UD UD 


UD UD 


UD 


UD 


UD 


UD 


UD UD UD 


UD 


UD 


UD 


UD 


CCi 


Oh 


1— » i-H 1— 1 1— 1 1— 1 UJ 

LL 



159 



Appendice N: Messaggi di errore 

Questa Appendice contiene un elenco completo dei messaggi di 
errore generati dal VIC, con una descrizione delle relative cause. 

BAD DATA (DATI ERRATI). La stringa di dati sta ricevendo da un file 
aperto, ma il programma stava aspettando dati numerici. 

BAD SUBSCRIPT (INDICE ERRATO). II programma stava cercando di 
fare riferimento ad un elemento di una matrice il cui numero e al di 
fuori del campo specificato nell'istruzione DIM. 

CAN'T CONTINUE (NON POSSO CONTINUARE). II comando CONT 
non funziona in quando il programma non e mai stato eseguito 
(RUN), c'e stato un errore o e stata corretta una riga. 

DEVICE NOT PRESENT (DISPOSITIVO NON PRESENTE). II 
dispositivo di I/O richiesto non e disponibile per un'istruzione OPEN, 
CLOSE, CMD, PRINT#, INPUT# o GET#. 

DIVISION BY ZERO (DIVISIONE PER ZERO). La divisione per zero e 
un non senso matematico e non e ammessa. 

EXTRA IGNORED (IGNORATI GLI EXTRA). Sono stati battuti troppi 
elementi di dati in risposta ad un'istruzione INPUT. Sono stati 
accettati solo i primi elementi. 

FILE NOT FOUND (FILE NON TROVATO). Se si sta cercando un file 
su nastro, e stato trovato il marcatore di fine nastro. Se si cerca sul 
disco, non esiste un file di quel nome. 

FILE NOT OPEN (FILE NON APERTO). II file specificato in 
un'istruzione CLOSE, CMD, PRINT#, INPUT# o GET#, deve essere 
per prima cosa aperto (OPEN). 

FILE OPEN (FILE APERTO). E' stato compiuto un tentativo di aprire 
un file usando il numero di un file gia aperto. 

FORMULA TOO COMPLEX (FORMULA TROPPO COMPLESSA). 
L'espressione stringa che viene valutata deve essere divisa in 
almeno due parti perche il sistema la possa elaborare. 

ILLEGAL DIRECT (DIRETTO ILLECITO). L'istruzione INPUT puo 
essere usata soltanto nell'ambito di un programma e non nel modo 
diretto. 

ILLEGAL QUANTITY (QUANTITA' ILLECITA). Un numero usato come 
argomento di una funzione o istruzione e fuori dal campo ammesso. 

LOAD (CARICAMENTO). C'e un problema con il programma sul 
nastro. 

NEXT WITHOUT FOR (NEXT SENZA FOR). Cio e provocato dalla 
nidificazione scorretta di iterazioni o dalla presenza di un nome 
variabile in un'istruzione NEXT che non corrisponde ad una variabile 
in un'istruzione FOR. 

160 



NOT INPUT FILE (NON FILE Dl INPUT). E' stato compiuto un 
tentativo di INPUT o GET dati dal file che era specificato soltanto per 
I'output. 

NOT OUTPUT FILE (NON FILE Dl OUTPUT). E' stato compiuto un 
tentativo di stampare (PRINT) i dati su un file che era specificato per 
la sola immissione. 

OUT OF DATA (MANCANO DATI). E' stata eseguita un'istruzione 
READ ma non ci sono dati da leggere in un'istruzione DATA. 

OUT OF MEMORY (MANCA MEMORIA). Non c'e altra RAM 
disponibile per il programma o per le variabili. Cio puo anche 
verificarsi quando sono state nidificate troppe iterazioni FOR oppure 
quando ci sono troppi GOSUB in atto. 

OVERFLOW (SUPERO Dl CAPACITA). II risultato di un calcolo e 
maggiore del numero massimo ammesso che e 1.70141884E + 38. 

REDIM'D ARRAY (MATRICE RIDIMENSIONATA). Una matrice puo 
essere dimensionata (DIM) soltanto una volta. Se viene usata una 
variabile matrice prima che la matrice sia dimensionata, viene 
eseguita un'operazione di dimensionamento (DIM) automatica su 
quella matrice definendo il numero di elementi a dieci. Qualsiasi 
successiva DIM provoca questo errore. 

REDO FROM START (RIFARE DALL'INIZIO). Sono stati battuti dati 
alfanumerici in un'istruzione INPUT quando si aspettavano dati 
numerici. Basta ribattere I'entrata corretta ed il programma 
continuera da solo. 

RETURN WITHOUT GOSUB (RETURN SENZA GOSUB). E' stata 
incontrata un'istruzione RETURN e non e stato emesso alcun 
comando GOSUB. 

STRING TOO LONG (STRINGA TROPPO LUNGA). Una strings puo 
contenere fino a 255 caratteri. 

SYNTAX (SINTASSI). Un'istruzione non e riconosciuta dal VIC. Ci 
sono parentesi in pi u o ne mancano, ci sono parole chiave scritte 
erroneamente, ecc. 

TYPE MISMATCH (MANCATA CORRISPONDENZA Dl TIPO). Questo 
errore si verifica quando viene usato un numero in luogo di una 
stringa o viceversa. 

UNDEF'D FUNCTION (FUNZIONE INDEFINITA). Si e fatto riferimento 
ad una funzione definita dall'utente che pero non e stata mai definita 
usando I'istruzione DEF FN. 

UNDEF'D STATEMENT (ISTRUZIONE INDEFINITA). E' stato compiuto 
un tentativo di GOTO o GOSUB o RUN su un numero di riga che 
non esiste. 

VERIFY (VERIFICA). II programma sul nastro o su disco non 
corrisponde al programma correntemente in memoria. 

161 



Indice alfabetico 



Abbreviazioni, comandi BASIC 133 

Accessori 106, 109 

Addizione 24, 115 

Animazione 50, 51-66, 99, 139, 143 



Dati, salvataggio e richiamo da nastro 

109 
Divisione 115, 160 
Durata (vedere FOR . . . NEXT) 



B 

Barre di comando 108 
BASIC 

Abbreviazioni 133 

Comandi 115 

Operatori 115 
• Istruzioni 119 

Variabili 86, 113 
Buffer (memoria di transito) 110 
Bus seriale 107 



Effetti sonori 135 
Elevamento a esponente 115 
Equazioni 115 
Errore di sintassi 6 
Espansione di memoria 



Calcoli 24 

Caratteri minuscoli 20 

Codici dei caratteri ASCII 145 

Colore 

Tasti 19, 32 

Mappa di memoria 63, 143-144 

Margine e schermo 33, 36, 38, 39, 

134 
Caricamento di programmi su 

nastro 109 
Comandi, BASIC 115 
Comandi dei giochi 108 
Comando CONT 115 
Comando LIST 8, 9, 50, 116 
Comando LOAD 109, 116 
Comando NEW 7 
Comando RUN 117 
Comando SAVE 109, 117 
Comando STOP 128 
Comando VERIFY 109, 118 
Configurazioni di I/O 149 
Connettore/collegamenti video 150 
Connettore di espansione 106, 149 
Connettori di I/O 106, 149 
Connettore per giochi 108, 149 
Correzione di errori 8, 50 
Correzione di programmi 8, 50 
Cursore 3, 18, 60 



File, nastro su cassetta 109 

Formule aritmetiche 24, 115, 123, 148 

Funzione ASC 131, 145 

Funzione ATN 129 

Funzione AND 115 

Funzione CHAR$ 102, 131, 145 

Funzione COSeno 129 

Funzione definita dall'utente 

(DEF) 120 
Funzione EXP 129 
Funzione FRE 132 
Funzione INT 129 
Funzione LEFT$ 131 
Funzione LEN 
Funzione LOG 130 
Funzione MID$ 43, 131 
Funzione PEEK 130 
Funzione POS 132 
Funzione RIGHTS 132 
Funzione RND 40, 43, 130 
Funzione SGN 130 
Funzione SIN 131 
Funzione SPC 132 
Funzione SQR 131 
Funzione STR$ 132 
Funzione TAB 132 
Funzione TAN 131 
Funzione USR 131 
Funzione VAL 132 
Funzionamento della cassetta di 

nastro 109 
Funzione 129 
Funzione iperboliche 148 



162 



Giochi da provare 153 



I 

II proprio nome illuminato 

(programma) 95 
Interfaccia IEEE-488 107 
Istruzione CLR 119 
Istruzione CLOSE 110, 119 
Istruzione DATA 79, 119 
Istruzione DEF 120 
Istruzione DIM 120 
Istruzione END 121 
Istruzione FOR 121 
Iterazione FOR . . . NEXT 
Istruzione GET 89, 122 
Istruzione GET# 123, 111 
Istruzione GOSUB 123 
Istruzione GOTO 123 
Istruzione IF . . . THEN 123 
Istruzione INPUT 84, 124 
Istruzione INPUT# 111 
Istruzione LET 124 
Istruzione NEXT 125 
Istruzione ON 125 
Istruzione OPEN 126 
Istruzione POKE 36, 80, 125 
Istruzione PRINT 5, 21, 127 
Istruzione READ 79, 128 
Istruzione REM 128 
Istruzione RESTORE 128 
Istruzione RETURN 128 
Istruzione SYS 128 
Istruzione WAIT 129 
Iterazioni di ritardo 55, 78, 96 
Iterazioni nidificate 



Modo maiuscolo/minuscolo 20 

Moltiplicazione 115 

Musica 

altezza 68 

effetti sonori 135 

tabella delle note 73 

piano VIC 75 

scrittura du motivi 77 



N 

Nomi 

di programma 109 

variabili 86 
Numeri 23, 24, 115, 123 
Numeri casuali 40, 43, 103 
Numeri di riga 78 



Operatore NOT 115 
Operatori 

Aritmetici 24, 114 

Logici 115 

Relazionali 115 
Ora, messa a punto dellorologio 

del VIC 114 
Orologio 114 



M 

Maggiore di 115 

Mappe di memoria dello schermo 63, 

143-144 
Matematiche 

formule 24, 115, 123, 148, 160 

tabella delle funzioni 148 

simboli 115 
Matrici 114-120 
Memoria 
Memoria RAM 
Messaggi di errore 6, 160 
Minore di 115 



Parentesi 115 

Parole riservate 86 

Per cominciare 3 

Periferiche 106 

Pi 20 

PRINT# 127 

Programma etichette postali 92 

Programma ROCKET COMMAND 153 

Programmi 

correzione 8, 50 

numerazione delle righe 79 

caricamento/salvataggio su nastro 

109 



163 



Registrator! a cassetta 107, 109 
Richiesta 84 

Ripristino (vedere tasto RESTORE) 
Rumore 71, 74 



Tasto Return 18 

Tasto RUN/STOP 19 

Tasto Shift 18 

Tasto Stop 19 

TO nelle istruzioni BASIC 121 

Toni 70 



Salvataggio di programmi su 

nastro 109 
Scrittura su nastro 109 
Segni di virgolette 96 
Segno di uguale a, diverso da 115 
Signor VIC (vedere animazione) 
Simboli grafici 14, 142, 146-147 
Sottrazione 115 
Suggerimenti VIC 3, 8, 16, 39, 40, 47, 

50. 78, 96 



Tasti grafici 14, 19 

Tastiera 17-20 

Tasto CLR/HOME 6, 18 

Tasto Commodore (vedere tasti 

grafici) 
Tasto CTRL 18 
Tasto CRSR 18, 60 
Tasto DEL 3, 8, 19 
Tasto INS 3, 8, 19 
Tasto Restore 17, 26 



U 

Uscita per cassetta 106 



Variabile di sistema ST 86 
Variabile Tl 114 
Variabile Tl$ 114 
Variabili 

Matrice 114 

In virgola mobile 113 

Intere 113 

Numeriche 86, 113 

Stringa42, 86, 113 
Variabili con indice 
Variabili intere 113 
Variabili numeriche 86, 113 
Variabili stringa 42, 86, 113 
Volume 69, 71, 72 



164 



II nuovo VIC computer 



e stato realizzato per essere un valido amico per I'utente . . . amico nel 
prezzo, amico nella forma, amico da usare ed espandere. 

Con il VIC, la COMMODORE mette a disposizione un sistema che 
permette a chiunque di apprendere facilmente e velocemente i concetti 
fondamentali del Computer . . . con la predisposizione di espandere il 
sistema, quando le esigenze e le conoscenze dell'utente diventano piu 
sofisticate. 

I possessori del VIC che desiderano imparare di piu circa la 
programmazione, dovrebbero rivolgersi al loro rivenditore Commodore 
per avere informazioni riguardanti la seguente letteratura e materiali di 
riferimento: 

• SERIE APPRENDIMENTO VIC . . . 

Una libreria di libri, nastri, cartucce che aiutano ad entrare nel mondo 
dei Computer. 

II primo volume della serie «Apprendimento» e chiamato «lntroduzione 
al Basic Parte l» a questo fera seguito la seconda parte, che dara 
informazioni suM'animazione, suono, musica ed altro. 

• VIC PROGRAMMER'S REFERENCE GUIDE . . . 

Un altro volume con importanti informazioni per nuovi o esperti 
programmatori e il VIC Programmer's reference guide. 

• PROGRAMMI PER IL VIC SU NASTRI, CARTUCCE, E DISCHI . . . 

Una libreria che si arricchisce di giorno in giorno. con nuovi programmi 
di educazione scolastica, utilita domestica, che aiuterranno a risolvere 
i vari problemi e aumenteranno la conoscenza; infine nuovi giochi per 
trascorrere ore liete. 

Questi programmi facili da usare non richiedono esperienza nella 
elaborazione dati. 



Qz commodore